满意答案
陌上初熏1224
2017.01.15
采纳率:49% 等级:9
已帮助:2715人
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
00分享举报