日期:2014-05-19  浏览次数:21005 次

c#用socket 分块传送问题,急,急,急
我用的是TCP协议,我做好后,在一台机子上调试OK,一个包大小为512k,但是在2太机子上调试就传不过去了,只能传到1点几M,我就把一个包设置成60k,结果调试成功。不知道是怎么回事!我发送端是用的beginsend   接受端是用的beginreceive     我只要一接收到数据就fs.beginwrite异步写入buffer
然后ManualResetEvent.waiteone阻止该线程,endwrite回调后就ManualResetEvent.set让线程继续,(我这样做是让他把数据写入buffer后再让发送端继续发数据)接着我就发送一个OK给发送端,发送端接着就再发第2个包,我不知道为什么必须把包设置为60k就没问题
在多一句嘴,我这个还想做成分布式的下载,所以我每一个包是不是要做一个标记,然后根据每个发送过来的包的标记还原成文件啊


------解决方案--------------------
你程序中应该是缓冲区的问题