请教各位一个关于winsock的问题
刚开始学习winsock,写了一个最简单的服务器/客户端程序。但发现即使我没有打开客户端的程序,服务器端的accept一样会成功。但我看了一些资料说accept是会阻塞的。。
下面是我的服务器端代码,请各位大牛帮忙看一下,谢谢!
#pragma comment(lib,"WS2_32.lib")
#include <WinSock.h>
#include <cstdio>
int main(){
WSADATA wsa;
WSAStartup(MAKEWORD(1,1),&wsa);
SOCKET listensocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKADDR_IN saddr;
saddr.sin_family=AF_INET;
saddr.sin_port=htons(35150);
saddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
bind(listensocket,(SOCKADDR*)&saddr,sizeof(saddr));
listen(listensocket,5);
SOCKET connectsocket;
SOCKADDR_IN caddr;
int caddr_len=0,recvlen=0;
while(1){
connectsocket=accept(listensocket,(SOCKADDR*)&caddr,&caddr_len);//没有客户端连接,程序不是应该阻塞在这里的么?
char buf[100];
recvlen=recv(connectsocket,buf,100,0);
printf("%d\n",recvlen);
closesocket(connectsocket);
}
closesocket(listensocket);
WSACleanup();
return 0;
}
以上代码会陷入死循环,不断输出-1