winsock在xp系统和2003系统中为什么不同???
我写了个C/s模式的小程序,客户端发送到服务端的字符串5k左右,服务端在2003系统中发现要接收两次,第一次接收到2689,第二次才把字符串接收完整;但是服务端在xp系统中的话就不要接收两次,一次就能全部接收完整,这是怎么回事???--------------------编程问答-------------------- 这个不出奇的啊,和你默认设置的缓冲区大小有关的
还有就是可能和你的网络状况有关的
你得自己写算法分割数据 --------------------编程问答-------------------- 顶 --------------------编程问答-------------------- 自己写分割数据不好办,不知道分多大好,就怕分成1k也被winsock分成两分发送,客户端的winsock自动把数据分割了,我不能在每个包之前加入分辨标志。 --------------------编程问答-------------------- 我的这个状况好像和默认设置的缓冲区大小无关,因为它有时候能收到完整的数据,有时候只能收到一部分,另一部分再另一个DataArrival事件中。
可能与2003的系统有关,因为服务端在xp系统上只需要getdata一次。 --------------------编程问答-------------------- 在一个连接中,客户端或者服务端用两个或者两个以上senddata语句发送大于8k的数据:
......
spServer(index).SendData textINI(0).Text
spServer(index).SendData textINI(1).Text
spServer(index).SendData textINI(2).Text
......
3个textini控件中的内容都大于8K,那么winsock控件是如何处理的?会不会出错??? --------------------编程问答-------------------- 这个不关系统的事,不管大小,会出现LZ说的情况的,所以要自己驱分出来哪些数据一是起的。
比如:在发送数据最后加入结束的标志,接收的时候判断是否到了结尾。
补充:VB , 网络编程