Добрый день! При пошаговом выполнении программы заметил, что управление из функции accert не возвращается. Почему?
| Код | #include <winsock2.h> #include <stdio.h> //---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused int main(int argc, char* argv[]) { WSADATA WsaData; SOCKET s,s1; SOCKADDR_IN sin,from; char *RecvBuffer; char *MsgText; int err,fromlen; MsgText = "<html><b>Hello!!</b></html>"; err = WSAStartup(0x0101,&WsaData); if(err == SOCKET_ERROR) { printf("WsaStartup() failed: %ld\n",GetLastError()); return 1; } s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); sin.sin_family = AF_INET; sin.sin_port = htons(3331); sin.sin_addr.s_addr = INADDR_ANY; err = bind(s,(LPSOCKADDR)&sin,sizeof(sin)); err = listen(s,SOMAXCONN); fromlen = sizeof(from); s1 = accept(s,(struct sockaddr*)&from,&fromlen); //<----- в этом месте printf("accept connection from %s, port %d\n", inet_ntoa(from.sin_addr),htons(from.sin_port)); while(recv(s1,RecvBuffer,sizeof(RecvBuffer),0)!=SOCKET_ERROR) { printf("%c",RecvBuffer[0]); send(s1,MsgText,sizeof(MsgText),MSG_DONTROUTE); } return 0; } //---------------------------------------------------------------------------
|
|