c # - Sådan tester du en fjern UDP-port

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg leder efter en enkel måde at se, om en ekstern UDP-port er åben på en server

Bedste reference


Vær opmærksom på at flere firewalls/netværksopsætninger/IDS osv. kan påvirke resultatet ... den følgende metode er IKKE 100\% pålidelig, men det er den eneste metode, der er mulig med UDP IMHO (da UDP er forbindelsesløs).


Du kan bruge UdpClient, indstille en timeout på det underliggende stik, foretage en forbindelse til den eksterne server/port, Send en lille besked (byte[]!) Og ring Receive]]. [11] [12] [13] [14] [15] [16]


Hvis porten er lukket, får du en undtagelse, der siger, at forbindelsen blev tvunget lukket (SocketException med ErrorCode 10054=WSAECONNRESET) ... hvilket betyder, at porten IKKE er åben.


Ellers modtager du enten et svar ELLER en timeout-undtagelse - begge skal fortolkes som 'UDP-porten er åben'.

Andre referencer 1


Du kan ikke. Det er ved design, fordi UDP er forbindelsesløs. Du skal løse det på applikationslag.

Andre referencer 2



  1. både på client ans serverinstallation nc:
    yum install nc (for centos)

  2. på serverlytte UDP-port: nc -ul 6111

  3. på klient nc -u <server> 6111

  4. skriv noget på klienten og tryk Enter - du skal se denne tekst på
    server