2 hq89625 hq89625 于 2013.10.19 21:31 提问

wince下的socket通讯问题

刚刚接触socket通讯,很多问题不明白。
这是个简单例子,我是在这个基础上改的
#include

#pragma comment( lib, "Ws2.lib" )

void TestSocketServer( void )

{

 WSADATA wsaData;



 if (WSAStartup(0x0202, &wsaData)!=0)

 {

     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(6000);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

 listen(sockSrv,5);



 SOCKADDR_IN addrClient;

 int len=sizeof(SOCKADDR);

 while(1)

 {

     SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

     char sendBuf[50];

     sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));

     send(sockConn,sendBuf,strlen(sendBuf)+1,0);

     char recvBuf[50];

     recv(sockConn,recvBuf,50,0);

     closesocket(sockConn);

 }

}
这个程序原理很简单,但能实现基本功能。能一直响应客户端,且客户端更换IP地址后也能连接到服务器端,但是每次收发完都会自动与客户端断开连接。
想问一下有没有什么办法能够避免收发结束后与客户端断开连接。且客户端发送断开命令后,再发送连接请求仍然能够连接上,改变客户端IP地址也不影响呢。
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
如果把这句放在while前,虽然能够与客户端一直连接,但是当客户端断开以后,再重新连接就会出现问题,因为之前的sockConn还存在
希望高手指教

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!