事业线聊天软件
两台电脑,连接在同一个路由器上。
设发送端电脑为A,接收端为B。server运行在A上,两个客户端client1(使用9012端口)和client2(使用9011端口)运行在B上。
A使用9001端口给B电脑拿宏中消山的9012和9011端口发送两条相同的数据包(数据长度为11字节,使用sendto发送,先发送到9012端口,再发送到9011端口)
确认网络状况良好,电脑状况良好,代码无问题:
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
intlen_head=sizeof(modbus-stx)+sizeof(modbus-address)+sizeof(modbus-command)+sizeof(modbus-len);
intlen_data=modbus-getDataLength();
intlen_tail=sizeof(modbus-fcs);
intlength=len_head+len_data+len_tail;
if(lengthMAX_UDP_PACKET_SIZE)
returnX_UDP_TOOMUCH_DATA;
CHAR*pBuf=(CHAR*)_alloca(length);
memcpy(pBuf,modbus,len_head);
if(len_data0)
memcpy(pBuf+len_head,modbus-data,len_data);
memcpy(pBuf+len_head+len_data,modbus-fcs,len_tail);
inttotal=0;
while(totallength)
{
intsended=sendto(g_socket,pBuf+total,length-total,0,(sockaddr*)addr,sizeof(sockaddr));
if(sended=0)
break;
total+=sended;
}
returntotal==length?X_UDP_OK:X_UDP_WRITE_FAILED;
现在碰到的问题是:
server程序刚启动时,server发送到client1和client2的指令均可以被成功接收;如果一直发送(每次都是先给client1发送,接着马上给client2发送)没有问题;
但是如果server软件间隔几十分钟不操作后,server再次发绝族送指令到client1和client2,会发现client1无法接收到任何数据,而client2正常接收。再次操作,发送client1和client2都可以正常接收。
用SNIFFER运行在B电脑上监控网络数据,发现只有一个发到9011端口的UDP包,而发往9012端口的包无影无踪。在发到9011端口的数据包前有一个WINSNameService包(这个应该没有影响)。
用IRIS软件监控A电脑上的数据,亦只有发现一个发往B电脑9011端口的UDP包,发往9012端口的包在server段亦未监控到。
在代码内有OutputDebugString辅助调试,可以确认有调用sendto给B电脑的9012端口发数据。
【飞秋聊天记录如何导出】不能导出吧,导姿岁薯出的是fcd格式的配置文件,可以再导入。不能迹者独立打开。雀巧查看聊天记录,全选-复制-粘贴到word文档中即可。
事业线聊天软件相关文章: