socket套接字连接有关问题,求教!
socket套接字连接问题,求教!!!!!!!
我遇到的问题是,当触发这个单击事件是,客户端(“机器人.exe”)收到了服务器的数据。但是关闭客户端之后,在触发这个事件,客户端却没有收到信息。。这是哪里不对了?
------解决方案--------------------
sockSrv关闭了吗?会占用端口,绑定失败的。
------解决方案--------------------
你第一次收到数据时,是客户端先运行,然后再点OnButton1这个事件,还是直接由OnButton1来运行客户端,代码看不出来有什么问题,把sockConn这个变量在关闭SOCKET后再清除一下,就是:
closesocket(sockConn);
sockConn=NULL;//根据你变量类型来决定怎么清除
- C/C++ code
void CTestttttDlg::OnButton1()
{
closesocket(sockConn);
ShellExecute(NULL,"open","机器人.exe",NULL,NULL,SW_SHOWNORMAL);//客户端机器人
// TODO: Add your control notification handler code here
WORD wVersionRequested;
WSADATA wsaData;
int err;
char a[50];
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return ;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return ;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(13000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;// 连接上的客户端ip地址
int len=sizeof(SOCKADDR);
sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);// 接受客户端连接,获取客户端的ip地址
for (int i=0;i<=3;i++)//发送的一系列指令
{
char sendBuf[150];
if (i==0)
{
sprintf(sendBuf,"%d\n",0);
}else if (i==1)
{
sprintf(sendBuf,"%d\n",2);
}else if (i==2)
{
sprintf(sendBuf,"%d\n",3);
}else if (i==3)
{
sprintf(sendBuf,"%fa%fa%fa%fa%fa%fa%fa%f\n",666.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0);
}
send(sockConn,sendBuf,strlen(sendBuf),0);// 发送消息到客户端
}
}
我遇到的问题是,当触发这个单击事件是,客户端(“机器人.exe”)收到了服务器的数据。但是关闭客户端之后,在触发这个事件,客户端却没有收到信息。。这是哪里不对了?
------解决方案--------------------
sockSrv关闭了吗?会占用端口,绑定失败的。
------解决方案--------------------
你第一次收到数据时,是客户端先运行,然后再点OnButton1这个事件,还是直接由OnButton1来运行客户端,代码看不出来有什么问题,把sockConn这个变量在关闭SOCKET后再清除一下,就是:
closesocket(sockConn);
sockConn=NULL;//根据你变量类型来决定怎么清除