Hallo,
ich empfange UDP-Pakete mit dem Winsock-Aufruf "recv" (NICHT recvfrom,
der wäre blockierend).
Konkret rufe ich also WSAAsynSelect auf, und in der Message-Behandlung
kommt dann der recv-Aufruf.
Das funktioniert auch:
Der WSAAsyncSelect - Aufruf:
1 | if (WSAAsyncSelect(s, Application->Handle, WM_USER, FD_ACCEPT | FD_READ | FD_CLOSE) == SOCKET_ERROR){
|
2 | .
|
3 | .
|
4 | .
|
und die Message - Behandlung:
1 | if (Msg.message == WM_USER) {
|
2 | if (WSAGETSELECTEVENT(Msg.lParam) == FD_READ) {
|
3 | bytecount=recv(s, (char *) buf, BUFLEN, 0);
|
4 | if (bytecount == SOCKET_ERROR) {
|
5 | MessageBox(NULL, "Error", "Read", MB_OK);
|
6 | } else {
|
7 | ...
|
Wie kann ich die IP (und den Port) des Senders rausfinden?
Vielen Dank,
Markus