Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
ChatGPT
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
GitHub工具
更多话题
为什么使用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
expeditioner
2006-09-12 08:33
我用java写的发送数据程序,使用Socket,接收程序用ServerSocket,经测试没有丢失数据现象。
而将发送程序换为PB时,接收程序接收的数据不完整,尾部数据丢失.
因为发送程序要求尽量使用PB,PB本身无此功能,是调用pslib21.dll实现的.这个文件版本好象很旧,我怀疑是这版本不兼容的问题。
现在我发现win2000下有一个ws2_32.dll文件,好象现在实现socket都是用这个库文件.
请问大家有没有这方面的资料?先谢了.
sinaID42390
2014-04-24 21:01
2006-09-08 12:18 "@banq"的内容
使用NIO Socket, 普通Socket是堵塞性质的,发生堵塞就有可能丢包。 ...
在NIO中的Selector中,如果用一个Selector管理多个通道。那有没有可能出现系统由于来不及处理数据而导致数据丢失的问题。
sinaID42390
2014-04-24 21:05
2006-09-08 12:18 "@banq"的内容
使用NIO Socket, 普通Socket是堵塞性质的,发生堵塞就有可能丢包。 ...
1,为什么阻塞就会丢包
2,使用Selector处理多个通道的时候,也有可能会出现系统因为处理不及,导致有的数据丢失啊。selector.select这个方法是阻塞的啊。
clonalman
2014-04-25 05:16
什么年代的帖子??
TCP协议已经保证不丢包(堵塞丢了会重发),
丢包只说明socket的"粘包"、“半包”没处理好
[该贴被clonalman于2014-04-25 05:23修改过]