VC 怎么知道socket结束了

来源:百度知道 编辑:UC知道 时间:2024/05/26 15:36:16
SOCKET mysck........
SOCKADDR mysckaddr........
....前面的省略

aaagetdata:
revc(mysck......
.......MessageBox(....
goto aaagetdata;
/////////////////////
如果这么写,我发现了对方断开连接的话,这依然会执行MessageBox这些代码。。

后来我想了下,,改成这样

aaagetdata:
if(对方断开连接了)goto connectend;
revc(mysck......
.......MessageBox(....
goto aaagetdata;
connectend:

=======================================
请问if(对方断开连接了) 这个怎么写?
或者你们的socket监听那部分是怎么写?
我想无限循环监听,如果断开了连接就执行另一些代码..

帮帮忙忙吧,我相当之屎急...

如果recv()函数执行成功了,但是返回的是0,就是对方断开了

1.简单服务器
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
static UINT port=%%1;
UINT Listen(LPVOID pParam)
{
SOCKET sServer,sClient;
char buf[1024];
int retVal;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sServer)
{
WSACleanup();
return -1;//创建套接字失败
}
SOCKADDR_IN addrServ;
addrServ.sin_family=AF_INET;
addrServ.sin_port=htons((short)pParam);
addrServ.sin_addr.s_addr=INADDR_ANY;
retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//绑定套接字失败
}
retVal=listen(sServer,1);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//开始监听失败
}
sockaddr_