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 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
    • ¥15 C++使用Gunplot
    • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
    • ¥15 matlab数字图像处理频率域滤波
    • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
    • ¥15 ELGamal和paillier计算效率谁快?
    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格