Witam ... mam problem z połączeniem po UDP:<font size="3"></span>
[SERWER]
UdpClient serverUDP;
IPEndPoint remoteIP = new IPEndPoint(IPAddress.Any, 0);
(konstruktor)
serverUDP = new UdpClient(socket);
byte[] bstart = serverUDP.Receive(ref remoteIP);
serverUDP.Connect(remoteIP);</li> </ul> </li> </ul>
*** - następnie w pętli wysyła datagramy ~63750b i odbiera wiadomość od klienta
for(::)
{ //tutaj przygotowywane są dane do wysłani
//UP
serverUDP.Send(HTabByeRealSend, HTabByeRealSend.Length);
//DW
bwiad = serverUDP.Receive(ref remoteIP);
}
[KLIENT]
UdpClient clientUDP;
IPEndPoint remoteIP;
clientUDP = new UdpClient();
remoteIP = new IPEndPoint(IPAddress.Parse(localIP), socket);
clientUDP.Connect(remoteIP);
clientUDP.Send(new byte[1], 1);
(timer1.Enabled = true;)</li> </ul> </li> </ul> * - teraz Timer robiący za pętle pobiera dane i wysyła ~ 10b, żeby serwer wiedział, że klient już skończył mielić otrzymana paczkę + info o stanie klienta public void timer1_Tick(object sender, EventArgs e) { //DW data = clientUDP.Receive(ref remoteIP);
//UP
clientUDP.Send(bwiad, bwiad.Length);
}
Wszystko działa pięknie i wspaniale i wspaniale ale tylko jeśli działa na 2 kompach w lanie i łączę się
np: podaję u klienta B ip servera A czyli 192.168.1.91
-KOMP A (server192.168.1.91) <---> ROUTER <----> KOMP B (klient192.168.1.65)
-oczywiście routerze jest przekierowanie socketa 48080 (którym sa dane wymieniane) na ip KOMP-a A
problem pojawia się przy moim stałym ip 87.205.X.X, gdyż, gdy podam go klientowi programy zawieszają się a licznik wysłanych i odebranych pakietów od klienta wynosi kolejno:
dla pobranych 4 i wysłanych 4; w sumie pobiera 255000b i wysyła 40b po czym się wywala i nic się ani nie pobiera, ani nie wysyła
np: podaję u klienta B ip servera A czyli 87.205.X.X
-KOMP A (server192.168.1.91) <---> ROUTER <----> (<-87.205.X.X) KOMP B (klient192.168.1.65)
Czy może mi ktoś pomóc rozwiązać ten problem ? ... jestem już stracznie zdesperowany bo od tygodnia nie mogę nic wymyślić. :(