10/07/10 14:43
pinguino
Salve. Da tempo cerco di creare un applicazione che si metta in ascolto sulla porta del mio router n. 1752.
Dim host As IPAddress = IPAddress.Parse(Label1.Text)
Dim mySock As Socket
Dim ip As IPHostEntry
Dim ep As IPEndPoint
Dim listener As TcpListener
ep = New IPEndPoint(host, 1752)
mySock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
listener = New TcpListener(ep)
listener.Start()
While True
mySock = listener.AcceptSocket()
ElaboraMessaggio(mySock)
End While
Il problema è che in questo pezzo di codice, mi da sempre errore su listener.Start dicendo: "Indirizzo richiesto non valido nel proprio contesto"
Sto impazzendo, premetto che è la prima volta che lavoro con i sockets...
Pls aiuto
Ultima modifica effettuata da pinguino 10/07/10 14:53
aaa
10/07/10 15:19
nessuno
Postato originariamente da pinguino:
Salve. Da tempo cerco di creare un applicazione che si metta in ascolto sulla porta del mio router n. 1752.
Una porta del tuo router? Il router non ha porte ...
"Indirizzo richiesto non valido nel proprio contesto"
Vuol dire che inserisci un IP che non è attivo su nessuna delle tue interfacce di rete.
Devi inserire il tuo IP locale attuale.
Sto impazzendo, premetto che è la prima volta che lavoro con i sockets...
In questo caso, la cosa migliore è studiare prima la teoria e dopo scrivere il codice ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
10/07/10 15:38
pinguino
Il fatto è che sto cercando di creare una connessione reverse, quindi il client si dovrebbe mettere in ascolto, ed il server dovrebbe contattare il client, ma dato che io (che dispongo del client) uso un router, non so come fare...
Una normale connessione client->server infatti riesco a farla...
Ultima modifica effettuata da pinguino 10/07/10 15:44
aaa
10/07/10 18:35
nessuno
Client e server sono "ruoli" che non sono fissi. Nel momento in cui il "server" tenta di contatare il "client", ha funzionalità di client ...
In ogni caso, non ho capito quale sia il problema ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
10/07/10 21:53
pinguino
Bhe il problema è che quando il client si connette al server (che si trova all' interno di un router, anche se ho aperto le porte apposite per eseguire questa operazione), non riceve risposta.
Ultima modifica effettuata da pinguino 10/07/10 21:53
aaa
11/07/10 7:47
nessuno
Postato originariamente da pinguino:
Bhe il problema è che quando il client si connette al server
Sei sicuro che la connessione avvenga correttamente?
(che si trova all' interno di un router,
Si dice "dietro" ad un router, non all'interno ...
anche se ho aperto le porte apposite per eseguire questa operazione),
Porte ? Ne basta una ... sei sicuro che sia aperta correttamente verso l'IP privato del server?
non riceve risposta.
Il client non riceve risposta? Non si connette quindi?
Devi spiegare tutto meglio e fare vedere il codice che usi, sia server sia client.
Devi parlare delle porte usate, del tipo di router che hai lato server, della configurazione effettuata sul router ... Insomma, l'errore può essere ovunque ... se vuoi risolvere devi dare tutte le informazioni del caso.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
11/07/10 10:49
pinguino
Allora, il codice del server:
Function msg(ByVal mySocket)
Dim buffer(1024) As Byte
Dim ByteToRead As Integer
Try
If mySocket.Connected Then
ByteToRead = mySocket.Receive(buffer)
Dim ritorno As String = Encoding.ASCII.GetString(buffer)
MsgBox(ritorno.TrimEnd())
End If
Catch ex As Exception
Throw ex
End Try
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim host As IPAddress
Dim mySock As Socket
Dim ip As IPHostEntry
Dim ep As IPEndPoint
Dim listener As TcpListener
ip = Dns.GetHostEntry(Dns.GetHostName())
host = IPAddress.Parse(ip.AddressList(0).ToString())
ep = New IPEndPoint(host, 165)
mySock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
listener = New TcpListener(ep)
listener.Start()
While True
mySock = listener.AcceptSocket()
msg(mySock)
End While
End Sub
Il codice del client, che uso per inviare il messaggio "Ciao Mondo":
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim host As IPAddress = Nothing
Dim mySock As Socket = Nothing
If Not IPAddress.TryParse("79.19.211.40", host) Then
MessageBox.Show("Indirizzo non valido")
Exit Sub
End If
Dim ep As IPEndPoint = New IPEndPoint(host, Integer.Parse(165))
mySock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
mySock.Connect(ep)
If mySock.Connected Then
mySock.Send(Encoding.ASCII.GetBytes("Ciao Mondo"))
End If
End Sub
Il problema è che nel client, a "MySock.Connect(ep)", dopo un pò di attesa ricevo il messaggio d' errore "Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato 79.19.211.40:165".
Inoltre: Sono andato nella pagina del mio router Alice Gate W2>Configurazione Collegamento Lan, ed ho aggiunto un Impostazione servizio Virtual Server; con porta 165 e come IP quello del mio pc, tipo di protocollo: TCP.
Altra cosa che potrebbe essere utile: quando il server si mette in ascolto, la finestra diventa bianca e l' applicazione non risponde, forse è questo il problema per cui il client non riceve risposta...
Premetto anche che sto testando sia server che client sullo stesso pc, quindi dietro lo stesso router.
Ultima modifica effettuata da pinguino 11/07/10 10:57
aaa