ciao,
ho creato un'applicazione client server che funziona correttamente all'interno della stessa rete.
ho la parte server che si mette in ascolto su una porta specificata in un form
Private tcpLsn As TcpListener
tcpLsn = New TcpListener(System.Net.IPAddress.Parse(ip.Text), CInt(porta.Text))
tcpLsn.Start()
poi ho il client che si connette
tcpclnt = New TcpClient()
tcpclnt.ReceiveTimeout = 10000
tcpclnt.SendTimeout = 10000
tcpclnt.Connect(ipAddress.Trim(), portNumber)
sino qui tutto ok...
quando il client si connette con il server :
dim s as Socket = tcpLsn.AcceptSocket()
Dim ipend As Net.IPEndPoint = s.RemoteEndPoint
e visualizzo l'ip:
MsgBox(ipend.Address.ToString)
poi rispondo inviando una stringa
s.Send(writeBuffer) rispondo
come dicevo va tutto bene e funziona correttamente all'interno della stessa rete.
il problema si presenta quando metto la parte server su una macchina remota con ip pubblico e il client si connette attraverso adsl e router di mezzo.
succede che il server si accorge della connessione ma NON riesce a rispondere
forse il problema è che il server tenta di rispondere ad un ip pubblico del client assegnato dall'isp ma poi il client è dietro a router e quindi ha una classe ip tipo 192.168.0.2
come posso risolvere il problema senza dover modificare le impostazioni del router?
grazie.