(WinAPI) winsock -> listen()
-
Ich hab ein kleines Problem mit listen(), bzw. weiss ich nicht so genau wie es Funktioniert. Hier mein Codebeispiel
WSADATA wsaData; sockaddr_in my_addr; char ip[12]; int port; int sockid; if (WSAStartup (MAKEWORD(1, 1), &wsaData) != 0)printf("fehler"); printf("ip-adresse: "); fflush(stdin); scanf("%s",ip); fflush(stdin); printf("port: "); fflush(stdin); scanf("%i",&port); my_addr.sin_family=AF_INET; my_addr.sin_port=htons(port); my_addr.sin_addr.S_un.S_addr=inet_addr(ip); memset(&(my_addr.sin_zero),'\0',8); if((sockid=socket(AF_INET,SOCK_STREAM,0))==-1)printf("socket()-error: %i",WSAGetLastError()); if(bind(sockid,(sockaddr*)&my_addr,sizeof(sockaddr))!=0 )printf("bind()-error"); if(listen(sockid,5)!=0)printf("listen()-error"); printf("bla bla bla");//!!!!!!!!!!!!!!!!!!!!!!!! closesocket(sockid);
Ich dachte listen() funktioniert so, dass es die Programmausführung anhält solange bis eine connection stattfindet. Mein Programm läuft jedoch bis zum ende durch, ohne anzuhalten. Hab ich irgendwo nen Fehler gemacht oder funktioniert das mit listen() ganz anders?
MfG
-
Du verwechselst listen mit accept. listen schaltet nur den Socket in den LISTEN-Status. Da wo bei dir blahblah ausgegeben wird kommt noch ein accept-Aufruf hin.
BTW: Das ist kein ANSI-C Thema. Windows-spezifische Themen gehören ins Winapi-Forum.