社区
网络编程
帖子详情
socket传送文件,每个tcp数据包都会重发
痴心笨笨
2012-09-20 03:26:32
如题,服务端、客户端我都是通过socket实现的,通过抓包软件查看,每个tcp数据包都是要重发一次,这是什么问题呢?
查看资料得知,可能是tcp中的重传计时器的问题,该如何解决呢?
附图,数据包情况
...全文
1251
18
打赏
收藏
socket传送文件,每个tcp数据包都会重发
如题,服务端、客户端我都是通过socket实现的,通过抓包软件查看,每个tcp数据包都是要重发一次,这是什么问题呢? 查看资料得知,可能是tcp中的重传计时器的问题,该如何解决呢? 附图,数据包情况
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
_暮落_
2012-09-27
打赏
举报
回复
缓冲区不够大?
痴心笨笨
2012-09-24
打赏
举报
回复
[Quote=引用 12 楼 的回复:]
自己程序逻辑的问题,怪到TCP的头上了。
[/Quote]
这位大神,可能啥逻辑错误呢
痴心笨笨
2012-09-24
打赏
举报
回复
[Quote=引用 16 楼 的回复:]
还有,lz那是什么抓包软甲,瞧着挺不错的。
[/Quote]
国产精品,科来软件
wjb_yd
2012-09-24
打赏
举报
回复
还有,lz那是什么抓包软甲,瞧着挺不错的。
wjb_yd
2012-09-24
打赏
举报
回复
是不是目标端回发的太狠了,百兆网卡,12.5M/S,看一下你的对端每秒发来的数据量是不是远远大于12.5M了,是的话必然会出现重传。 再者就是把你的接受缓冲区弄大一些。
Joseph-Growth
2012-09-21
打赏
举报
回复
你的抓包工具确实挺不错的。
我看你是在本机上自己发自己收。我分析的是这样的:当接收缓冲区阻塞的时候,你发送的数据包发送给接收端,此时,接收端不能接收,也就是不能返回ACK,它也不能返回RST,所以就会不处理,这时候超时时间到,发送端以为接收端没收到,就又发了一个SYN,这样就重发了。
我建议的是,提高接收线程的优先级,或者说降低发送线程的优先级。让接收端缓冲队列时刻保持能接收的状态。
痴心笨笨
2012-09-21
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
链路太堵了,tcp通信的ACK数据包未及时收到原因,降低I\O,可以解决这个问题。
[/Quote]
如何降低I/O呢?
geziliu
2012-09-21
打赏
举报
回复
应该是代码问题,TCP是流的。
UDX协议
2012-09-21
打赏
举报
回复
自己程序逻辑的问题,怪到TCP的头上了。
Gloveing
2012-09-20
打赏
举报
回复
应该是你发送的速率太快了,网络环境传输速率跟不上
Joseph-Growth
2012-09-20
打赏
举报
回复
链路太堵了,tcp通信的ACK数据包未及时收到原因,降低I\O,可以解决这个问题。
痴心笨笨
2012-09-20
打赏
举报
回复
这个tcp数据包的发送不是直接控制的,我是通过
if(send(m_Socket, sBuffer, nLen, 0) == nLen)
直接发送的一个819200大小的sBuffer实现的...
痴心笨笨
2012-09-20
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
引用 4 楼 的回复:
引用 3 楼 的回复:
1.证明你网络很卡
2.你代码有问题
谢谢啊,应该是哪个地方处理的有问题啊~~
网络应该没问题吧,我现在是局域网对传呢?
我最纳闷的就是那个两个重传的数据包之间时间间隔仅仅是20微秒上下,咋会这么短时间就重传呢?
我好奇的是20微秒上下你就发送1000左右,那你1秒钟得发多少东西?
要是你发的包一出门堵塞了,就被丢弃了,……
[/Quote]
韩信将兵多多益善啊,哈哈
“要是你发的包一出门堵塞了,就被丢弃了”倒是也有这种可能,研究中
guolaikk
2012-09-20
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:
1.证明你网络很卡
2.你代码有问题
谢谢啊,应该是哪个地方处理的有问题啊~~
网络应该没问题吧,我现在是局域网对传呢?
我最纳闷的就是那个两个重传的数据包之间时间间隔仅仅是20微秒上下,咋会这么短时间就重传呢?
[/Quote]
我好奇的是20微秒上下你就发送1000左右,那你1秒钟得发多少东西?
要是你发的包一出门堵塞了,就被丢弃了,会不会这么短时间就重传呢?
痴心笨笨
2012-09-20
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
1.证明你网络很卡
2.你代码有问题
[/Quote]
谢谢啊,应该是哪个地方处理的有问题啊~~
网络应该没问题吧,我现在是局域网对传呢?
我最纳闷的就是那个两个重传的数据包之间时间间隔仅仅是
20微秒
上下,咋会这么短时间就重传呢?
看不见的裂痕
2012-09-20
打赏
举报
回复
1.证明你网络很卡
2.你代码有问题
痴心笨笨
2012-09-20
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
对方最终收到的数据重复吗?
[/Quote]
没有重复数据,客户端接收到得数据完全正确~~
guolaikk
2012-09-20
打赏
举报
回复
对方最终收到的数据重复吗?
p2p.zip_java
tcp
p2p开发_
tcp
实现
文件
_聊天传
文件
使用java语言开发的基于
TCP
/IP的聊天程序,用户可以在同一个局域网内实现
文件
互传等功能
TCP
_FILE_TRAN
解决了
SOCKET
传送
文件
时的粘包和半包的问题,C语言编写,多线程技术. 传输的
文件
的路径是固定的F:/test.jpg,接收为F:/recv.jpg,路径和
文件
可以修改
Socket
Tool
tcp
udp 测试工具
udp
文件
传输 实验
UDP本身是一种无连接的协议。它只管发送,而不需要知道,发送的包是不是准确的到达了目的地。所以它具有发送效率高的特点,同时也具有丢包的弱点。但如果对udp加一些验证和
重发
机制,就能很大程度上避免丢包的情况,达到稳定的传输。同时,此种方式的传输速度
会
比
TCP
方式的传输快很多。以下是一种串行的带验证
重发
机制的UDP传输
文件
,源代码,client负责发
文件
,server负责接
文件
。希望对大家有帮助。程序中,发送的包是自己定义的,这样除了可以将需要发送的数据发送过去外,还可以将一些控制信息发过去。
python中的
tcp
示例详解
主要给大家介绍了关于python中
tcp
协议的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
网络编程
18,358
社区成员
64,186
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章