#include<winsock2.h> #include<stdio.h> #pragma comment(lib,"ws2_32.lib") void main() { WSADATA wsaData; SOCKET sockServer; SOCKADDR_IN addrServer; SOCKET sockClient; SOCKADDR_IN addrClient; WSAStartup(MAKEWORD(2,2),&wsaData); sockServer=socket(AF_INET,SOCK_STREAM,0); addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//INADDR_ANY表示任何IP addrServer.sin_family=AF_INET; addrServer.sin_port=htons(6000);//绑定端口6000 bind(sockServer,(SOCKADDR*)&addrServer,sizeof(SOCKADDR)); //Listen监听端 listen(sockServer,5);//5为等待连接数目 printf("服务器已启动:\n监听中...\n"); int len=sizeof(SOCKADDR); char sendBuf[100];//发送至客户端的字符串 char recvBuf[100];//接受客户端返回的字符串 //会阻塞进程,直到有客户端连接上来为止 sockClient=accept(sockServer,(SOCKADDR*)&addrClient,&len); //接收并打印客户端数据 recv(sockClient,recvBuf,100,0); printf("%s\n",recvBuf); //关闭socket closesocket(sockClient); WSACleanup();}
初次接触socket,本人在百度百科抄的socket服务端的代码,用VS2008调试的时候为什么到accept
函数的时候都是直接过没有阻塞呢?本人点击运行也是直接就跑完了。而且看recVBuf和addrClient
里面都是初始化的值。
解决方案
5
“用VS2008调试的时候”….没发现你调试了。
你知不知道什么叫断点?什么叫单步?什么叫错误码?
赵老师,上!
你知不知道什么叫断点?什么叫单步?什么叫错误码?
赵老师,上!
5
改在MSDN98例子代码中抄。
MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix, MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl
SAMPLES\VC98\SDK\NETDS\WINSOCK\SIMPLE\SIMPLES.C
SAMPLES\VC98\SDK\NETDS\WINSOCK\SIMPLE\SIMPLEC.C
MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix, MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl
SAMPLES\VC98\SDK\NETDS\WINSOCK\SIMPLE\SIMPLES.C
SAMPLES\VC98\SDK\NETDS\WINSOCK\SIMPLE\SIMPLEC.C
10
WSAStartup socket bind等这些函数,看一下返回值,函数调用失败就会异常就会退出的啦。