Winsock - Blocking Socket
-
Hallo,
Ich habe ein Problem mit Winsock.Ich verwende C++, um eine Wifi - Verbindung mit meinem DS herzustellen,
doch es funktioniert nur mit blockierenden Sockets (keine Ahnung warum)Kann mir einer von euch sagen, wie man in Winsock solche Sockets erstellt ?
Standartmäßig sind sie ja nicht-blockierend...
-
DarkShadow44 schrieb:
Standartmäßig sind sie ja nicht-blockierend...
doch
-
struct sockaddr_in i_addr; i_addr.sin_family = AF_INET; i_addr.sin_port = htons(6666); i_addr.sin_addr.s_addr = htonl(INADDR_BROADCAST); char optval = 1; if(server) { ServerSockListen=socket(AF_INET, SOCK_DGRAM, 0); bind(ServerSockListen, (struct sockaddr *) &i_addr, sizeof(i_addr)); int i=0; char buffer[10]; memset(buffer,'\0',10); while(1) { int size=sizeof(struct sockaddr); recvfrom(ServerSockListen,buffer,8,0, (struct sockaddr *) &i_addr, &size);Aber bei recvfrom wartet es nicht...
Es füllt den buffer immer mit ... NICHTS
-
ich lege dir das prüfen der rückabewerte bzw. GetLastError/WSAGetLastError ans herzen.
-
DarkShadow44 schrieb:
Aber bei recvfrom wartet es nicht...
Hehe, das haben nicht-blockierende Funktionen so an sich.
-
Danke. Er wollte zum Empfangen nur INADDR_ANY und nicht INADDR_BROADCAST. Ich dachte bloß wenn es auf dem DS funktioniert, dann klappt es auch auf dem PC...

Aber es bricht immer nach 32 empfangenen Paketen ab, weißt du vielleicht warum ?
Und warum muss der Server zuerst starten ? Er müsste die Pakete doch auch empfangen, wenn der Client schon länger sendet, oder nicht ?