Avatar billede Slettet bruger
24. marts 2008 - 21:17 Der er 5 kommentarer og
1 løsning

UDP server/client med NAT virker ikke

Hejsa

Jeg er ret erfaren med at lave netværks programmering, men ikke med UDP. Jeg har en server der lytter på port 8000, sådan:

server = new UdpClient();
server.Client.Bind(new IPEndPoint(IPAddress.Any, int.Parse(PortBox.Text)));

Og en Client der forbinder sådan:

C = new UdpClient();
C.Connect(IPAddress.Parse(ServerIPBox.Text), int.Parse(ServerPortBox.Text));

Og Clienten lytter efter beskeder fra serveren:

IPEndPoint IPE = null;
received = C.Receive(ref IPE);
string ReceivedData = Encoding.ASCII.GetString(received);

Der er forwarded til min IP med port 8000 osv. Og clienten kan også forbinde til serveren (samme PC) via min WAN IP. Men når serveren svarer tilbage når en client sender noget, når det aldrig frem til clienten, kun hvis jeg forbinder til serveren via LAN IP. Nogle gange virker det med WAN, andre gange ikke...

Serveren svarer sådan:

server.Client.SendTo(Encoding.ASCII.GetBytes("UserList#" + SB.ToString()), RemoteEP);

RemoteEP er fra ref receive, den burde jo kunne svarer tilbage på samme EP som den får en besked fra?


Er der nogen der kan forklare dette mærkelige fænomen?
Avatar billede arne_v Ekspert
25. marts 2008 - 01:28 #1
Et par løse ideer:

1) med UDP kan der jo forsvinde en pakker

2) hvis der er NAT foran client skal server jo ikke sende til clients IP adresse men
  til den eksterne addresse på router/firewall
Avatar billede Slettet bruger
25. marts 2008 - 10:31 #2
Ja altså server får jo et Endpoint fra receive, der fx hedder 90.184.xxx.xxx:42345, det er vel det jeg skal svare tilbage på ikk? det er jo et endpoint som routeren har givet forbindelsen.
Avatar billede arne_v Ekspert
31. marts 2008 - 05:17 #3
Og 90.184.xxx.xxx er den eksterne IP og der er åbnet for port 42345 ?
Avatar billede Slettet bruger
31. marts 2008 - 08:54 #4
Der burde jo ikke åbnes for den port, da det er en routeren selv har givet forbindelsen. Men heg brugte et andet eksemepl og det virker vidst  fint. Smid et svar
Avatar billede arne_v Ekspert
31. marts 2008 - 15:52 #5
UDP har ikke et begreb der hedder "forbindelse". Ethvert datagram er selvstændigt.

D.v.s. at der skal åbnes for pakker der skal ind uanset hvad du kalder client og server.
Avatar billede arne_v Ekspert
31. marts 2008 - 15:52 #6
Jeg kan da godt smide et svar. Omend jeg er lidt i tvivl om hvad jeg har bidraget med.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester