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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 虚拟机打包apk出现错误
    • ¥30 最小化遗憾贪心算法上界
    • ¥15 用visual studi code完成html页面
    • ¥15 聚类分析或者python进行数据分析
    • ¥15 逻辑谓词和消解原理的运用
    • ¥15 三菱伺服电机按启动按钮有使能但不动作
    • ¥15 js,页面2返回页面1时定位进入的设备
    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝