while (true)
{ ...}
Pętla while
wykonuje się tak długo, jak warunek podany w nawiasie będzie prawdziwy. Można dać wyrażenie w stylu while (zmienna > 90)
i wtedy pętla będzie się wykonywać w kółko tak długo, aż zmienna
będzie większa od 90. Ponieważ u Ciebie warunkiem jest TRUE
, więc ten warunek będzie zawsze prawdziwy, a co za tym idzie - pętla będzie się kręcić w nieskończoność.
Jeszcze takie wyjaśnienie, bo nie wiem, czy wiesz, co to jest pętla. Pętle służą do powtarzania danej sekwencji poleceń, czyli w typ wypadku wszystko między {
i }
będzie powtarzane.
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
Tutaj tworzymy sobie socket, czyli obiekt, który wykorzystamy do komunikacji przez sieć. Komunikacja będzie wykonana w oparciu o protokół UDP.
IPAddress serverAddr = IPAddress.Parse("adres IP");
IPEndPoint endPoint = new IPEndPoint(serverAddr, 11000);
Tutaj określasz parametry połączenia, czyli wskazujesz adres IP oraz port, na którym ta komunikacja ma się odbywać.
string text = "Hello";
Tworzysz zmienną tekstową, której przypisujesz wartość Hello
- ta treść będzie później wysyłana przez stworzone wcześniej połączenie sieciowe
byte[] send_buffer = Encoding.ASCII.GetBytes(text);
sock.SendTo(send_buffer, endPoint);
Tutaj następuje właściwe przesłanie treści - najpierw deklarujesz tablicę i zapełniasz ją wartością pobraną ze zmiennej text
, a następnie wysyłasz tą treść przez sieć.
Specjalistą od C# ani socketów nie jestem, więc proszę innych o sprostowanie, jeśli piszę głupoty, ale widzę tutaj potencjalny wyciek pamięci. Za każdym przebiegiem pętli jest tworzony nowy obiekt Socket sock = new Socket
, ale nie widzę jego zwalniania. Czy tak powinno być (i np. socket jest automatycznie niszczony po zakończeniu transmisji/wysłaniu danych), czy tworzymy ich nieskończoną ilość i robimy przez to niezły bałagan? Poza tym, jak słusznie zauważył @Tomek Pycia, w pewnym momencie system stwierdzi, że więcej socketów nam już nie przydzieli, bo nie chce/nie może.