本地客户端socket连接成功,并且能发送数据,但是服务器端接收失败。

2020-10-21 科技 172阅读
if(!handle){MessageBox(_T("绑定端口失败或者监听失败!"));return;}sockaddr from; int fromlen=15;flag=TRUE;while(flag){HANDLE handlefrom=winSocketaccept(handle,&from,&fromlen);//fromlen值小于16就能接收初始化成功。 if(!handlefrom){//MessageBox(_T("启动接受失败!"));continue;}BYTE buffer[1024]; int sendlen=0; sendlen=::winSocketRec(handle,buffer,fromlen,MSG_PEEK);//接收语句一直无法接收数据。 if(sendlen<=0){//MessageBox(_T("接受信息失败!")); int error=0; error=::WSAGetLastError(); // WSAECONNRESETcontinue;}sendlen=::winSocketSend(handle,buffer,fromlen); if(sendlen<=0){//MessageBox(_T("发送信息失败!"));continue;}}::winSocketClose(handle); HANDLE winSocketbind(const TCHAR* szIp,unsigned short nPort,UINT connet)//根据ip和端口启动socket连接,最多连接数{LPSOCKET handle=new ENUMSOCKET(); handle->skt=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//连接socket,使用tcp发送字符流 //socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(handle->skt==INVALID_SOCKET)//连接成功{delete handle; return NULL;}//赋值ip值至socket char ip[64]={0}; #ifdef _UNICODE size_t convert=0; ::wcstombs_s(&convert,ip,64,szIp,63);#else_strcpy_s(ip,64,szIp,63);#endifsockaddr_in addr={0}; addr.sin_addr.S_un.S_addr=::inet_addr(ip);//设置ip addr.sin_family=AF_INET; //设置网络服务 addr.sin_port=nPort; //设置端口//建立连接if(bind(handle->skt,(sockaddr*)&addr,sizeof(addr))==SOCKET_ERROR)//连接失败{delete handle; closesocket(handle->skt); return NULL;}::listen(handle->skt,connet); //连接至网络,返回改socket
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com