hq89625 2013-10-19 13:31
浏览 1130

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还存在
希望高手指教

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
    • ¥15 错误 LNK2001 无法解析的外部符号
    • ¥50 安装pyaudiokits失败
    • ¥15 计组这些题应该咋做呀
    • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
    • ¥15 让node服务器有自动加载文件的功能
    • ¥15 jmeter脚本回放有的是对的有的是错的
    • ¥15 r语言蛋白组学相关问题