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: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
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 ...
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 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