为什么使用Socket接收时丢失数据?

06-09-07 expeditioner
使用socket,TCP协议,服务器端接收数据时,如果数据超过600KB,就只能接收前部分,会丢失后面部分数据,如果客户端将数据分成若干小份,分次发送则会提高成功率,但如果数据量再大一些,又会丢失,每次发送的数据量越小成功率越高,但发送的次数过多或总数据量再大一些就可能丢失,这是什么原因?需要设置缓存吗?谢谢

expeditioner
2006-09-08 10:53
用setReceiveBufferSize设置了65536,虽然成功接收的数据多了一些但还是失败,又丢失了最后面的一部分数据。

banq
2006-09-08 12:18
使用NIO Socket, 普通Socket是堵塞性质的,发生堵塞就有可能丢包。

expeditioner
2006-09-08 15:17
多谢您的回复。

请问是使用java.nio.channels.*吗?

如果是该用什么类处理流?

我以前用socket时是这样接收流的,

zipin=new ZipInputStream(incoming.getInputStream());

如果用SocketChannel怎么接收流?先谢了.

hqb732
2006-09-08 17:07
sadfsdaf

猜你喜欢
2Go 1 2 下一页