用SOCKET传输2组数据的问题
服务器建立一个SOCKET
char s[10]="winsock";
char s1[10]="winsocket";
socket=accept(m_server.m_hSocket,NULL,NULL);
send(socket,s,sizeof(s),0);
send(socket,s1,sizeof(s1),0);
客户端
len=recv(m_client.m_hSocket,s2,10,0);
len1=recv(m_client.m_hSocket,s3,10,0);
AfxMessageBox(s2);
AfxMessageBox(s3);
当只发送一个s或s1的时候,运行正常,都会弹出一个提示框显示“winsock”或“winsocket”
但是当s和s1一起发送(就象上面的格式),虽然会弹出“winsock”和“winsocket”提示框
但是会多弹出2个乱玛对话框。不知道究竟那里出了问题?
问题点数:0、回复次数:4Top
1 楼luolovegui(骆归)回复于 2005-06-01 18:34:06 得分 0
网络太忙了,他会把两个做成一个发送吧。Top
2 楼newbiestar()回复于 2005-06-01 20:36:25 得分 0
粘包了……几个数据包被一次收下来了……
自己定义一个包格式吧……然后每次收完了自己解析。这个东西没有什么更好的办法解决了(除非你用人家做好的东西),另外还有个简单方法是两个socket,发送不同的东西,并且一次发送以后如果对方没有响应,就继续重发,并且阻止其他的内容发送……Top
3 楼newman0708(nch)回复于 2005-06-01 20:46:14 得分 0
我觉得应该
char s[10]="winsock\n";
char s1[10]="winsocket\n";
在接收到了后,自己再解析它,(就是以"\n"为分隔符,相当于readline)
要么你就用 newbiestar() 的方法。Top
4 楼AntonlioX(做人要厚道)回复于 2005-06-01 20:48:14 得分 0
up
Top




