Q
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...
}
}
}