UDP-Verbindung
-
Hi Forum,
mit TCP/IP habe ich bereits Erfahrung - ich nutze die mfc-Klasse CAsyncSocket. Um eine Client-Verbindung zu erstellen mache ich zuerst ein Create (mit SOCK_STREAM), dann ein Connect (hier übergebe ich IP-Adresse und Port-Nr.) und schon kann ich über Send und Receive Daten schicken und empfangen. Kennt jemand den Ansatz für eine UDP-Verbindung? In der MSDN steht nicht allzuviel drin...
Frage 1: Gibt es bei UDP ebenfalls Server u. Clients? oder wird da nicht unterschieden - (lediglich der Port und die IP-Adresse der Gegenstelle müssen bekannt sein?...)
Mein Ansatz zum Senden sieht wie folgt aus:
CAsyncSocket sock; //Socket kreieren sock.Create(0, SOCK_DGRAM, FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, NULL); //Senden CString str = "HALLO, hört mich jemand?"; int nRet = sock.SendTo(str, str.GetLength(), dwPort, strIP); // wobei nRet == str.GetLength() -> alles OK
Frage 2: wie sollte jetzt die Gegenstelle aussehen?
Mein Ansatz: einen Thread generieren, der wie folgt aussieht macht's nicht:CAsyncSocket sock; while(IrgendEineKondition) { TCHAR buff[4096]; int nRead = sock.ReceiveFrom(buff, 4096, strIP, (UINT &)dwPort); if( nRead == SOCKET_ERROR) { DWORD dw = GetLastError(); if( dw == WSAECONNRESET ) // The virtual circuit was reset by the remote side { //hier lande ich jedes mal... } } }