c# jak odbierac "nasluchiwac" przychodzące pakiety UDP?

0

Witam

Interesuje mnie jedna kwestia. Skoro protokół UDP jest bezpołączeniowy to czy to oznacza, ze mogę na programie Serwer utworzyć tylko jeden socket i w jakiś sposób go nasłuchiwać ?

Czy jeżeli zainicjuje socket to jest jakaś zdarzenie obsługujące odebranie jakichkolwiek danych ?
No i pytanie ostatnie ;-) Jeżeli inne aplikacje (klienci) będą wysyłać pakiety danych na tym samym porcie co działa (aplikacja serwer), to jeden socket wystarczy by obsluzyc wszystkie pakiety przychodzące niezależnie od tego z której aplikacji lub z którego IP przyszedł pakiet UDP ? Oczywiście zakładam, ze jakieś dane mogą się zgubić. Chodzi mi bardziej o to czy jednym socketem odbiorę pakiety od różnych klientów?

0

Socket sam w sobie oznacza jakiś konkretny adres, port oraz protokół, więc dostaniesz na nim tylko to co do niego jest skierowane. Bezpołączeniowy UDP oznacza w przeciwieństwie do połączeniowego TCP, że połączenie nie ma różnych stanów (początek transmisja, zakończenie) oraz, że nie dba o to czy pakiet doszedł czy nie. Jak chcesz podsłuchiwać pakiety to masz wireshark i bibliotekę pcap.

0

Chce napisać komunikator aplikacja serwer i klient - komunikacja po UDP
I teraz nie wiem czy powinienem w aplikacji Serwer uruchomić nasłuchiwanie w pętli (najlepiej w innym wątku) czy jest jakieś zdarzenie, które mogę obsłużyć, gdy dane na danym sockecie się pojawią ?

Odnośnie snifera - to fajne narzędzie ale nie wykrywa mi interfejsów w moim Lapku ;-(

0

W google masz sporo przykładów pod hasłami: c# client server udp example

0
using System.Net;
using System.Net.Sockets; 

i masz tam klase

UdpClient

Poczytaj w MSDN jak jej używać.

W załączniku masz przykład serwera UDP z pewnej książki, który się uruchamia po wciśnięciu buttona.

1 użytkowników online, w tym zalogowanych: 0, gości: 1