社区
网络编程
帖子详情
TCP发送速度的控制的问题!重在参与,顶的有分!
SuperKick
2004-03-28 11:22:27
大家在用TCP发送数据的时候一定会遇到这样的问题:发送端发送数据的速度未知,会不会出现接收端来不及接收的问题?如果有的话各位是如何解决这个问题的?最好讲详细一点,包括发送端发送时采用什么策略,接收端采用什么策略,在定义自己的协议包头时的一些注意事项,大家都说一下吧!
...全文
661
39
打赏
收藏
TCP发送速度的控制的问题!重在参与,顶的有分!
大家在用TCP发送数据的时候一定会遇到这样的问题:发送端发送数据的速度未知,会不会出现接收端来不及接收的问题?如果有的话各位是如何解决这个问题的?最好讲详细一点,包括发送端发送时采用什么策略,接收端采用什么策略,在定义自己的协议包头时的一些注意事项,大家都说一下吧!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
39 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lyce
2004-03-31
打赏
举报
回复
我在编TCP的过程中也遇到接受错误的问题
lyce
2004-03-31
打赏
举报
回复
幫你UP
TimLL
2004-03-31
打赏
举报
回复
确实在发送时使用Sleep的方式非常耗费系统资源,尤其是在服务器一端!但每发送一次就等待一次应答是不是将程序的流程搞复杂了?不知有什么比较好的发送算法及接收算法。
ilbj
2004-03-30
打赏
举报
回复
如果你直接用socket编程就不用考虑这个问题
flashboy
2004-03-30
打赏
举报
回复
你们所说的TCP的发送速度控制是传输层的速度控制,但是我想在应用层来进行控制,不知道有没有什么好的办法没有??
SuperKick
2004-03-30
打赏
举报
回复
最后顶一次,没人答就结贴了
tangrh
2004-03-30
打赏
举报
回复
哈哈哈哈
maximin
2004-03-30
打赏
举报
回复
to SuperKick(思考中...勿打扰!): 指教不敢当。就说说个人的见解吧。
大致如下:
每个发送包数据的长度一般为1k,并且有一个自定义结构的控制包头。
struct tagNetHeader
{
DWORD dwID;
DWORD dwTotalLen;
....
};
发送端采用循环发送,直到成功或发生错误
while(1)
{
int nSend = send(...);
if(nSend == -1)
错误码为block;
-->continue,此处不用sleep,直接进行下一次发送操作
否则推出。
}
接收端设计一个算法保证接收包的完整,完整性由tagNetHeader来控制。
uuussseeennn
2004-03-30
打赏
举报
回复
如果采用TCP,缓冲区会被覆盖吗?
TCP有窗口机制,如果数据已经被TCP接受,而应用层未把数据取走,窗口大小会减少,对方会自动减少所要发送的数据量,所以我觉得用TCP不会产生覆盖问题啊,希望高人指教!
mrf2con
2004-03-29
打赏
举报
回复
mscf(扎西特勒):你的等级挺高的,是不是早就在csdn上了?
shenxin197735
2004-03-29
打赏
举报
回复
如果数据被覆盖了那也不是TCP的事
你要解决的问题应当是在用TCP发送数据之前的工作
谁给TCP的数据,你找它去理论吧
shenxin197735
2004-03-29
打赏
举报
回复
硬件的传输也得靠软件来实现,既然支持了TCP,就要遵守TCP的规则
不能把硬件和和软件混淆在一起谈论
shenxin197735
2004-03-29
打赏
举报
回复
看我面子,tcp它不敢收不到
SuperKick
2004-03-29
打赏
举报
回复
再补充一下,以上总结是基于发送端的发送数据速度未知的情况下的总结,实际上很多情况就是这样,大家继续讨论:)
SuperKick
2004-03-29
打赏
举报
回复
呵呵,讨论的人好多,高兴啊。先把上面大家讨论的总结一下:
(1)TCP协议可靠并不等于基于TCP协议的应用可靠,比如会出现发送太快对方来不及接收导致数据被覆盖的情况。
(2)MFC的Socket类在发送时只是拷贝到缓存区内。
大家有没有什么好的方法或策略处理来不及接收的情况?
fengge8ylf
2004-03-29
打赏
举报
回复
想问问大家 recv函数在什么情况下会返回
fengge8ylf
2004-03-29
打赏
举报
回复
数据会在应用层丢失的,在TCP层以及以下层是不会丢失的。如果TCP缓冲区满了,而你应用层没来得及用recv等类似接收函数从TCP缓冲区拷贝数据时,这时如果TCP又有数据到达会把前面来不拷贝的数据“覆盖”掉。还要注意:如果你send了10次 对方可能recv一次就全部接收完毕了。
qiufuwang
2004-03-29
打赏
举报
回复
我推
smallbugworm
2004-03-29
打赏
举报
回复
顶
fengge8ylf
2004-03-29
打赏
举报
回复
哈哈 很简单啊 发送完数据后 等待对方的回复 接收到回复后 再发下一个包
这种办法理论上效率低(因为要等待对方回复,但是想一想,一字节的数据从一台计算机传输到另一台计算机速度是很快的),但是很可靠 很稳定 不会出现数据被冲掉的问题 也不用考虑拆包的问题。
加载更多回复(18)
TCP
/IP协议攻击
无题1.说明2.题目3.实践过程 1.说明 本文章主要是谈谈我做这几个小实验的一些做法和看法,
重在
操作。在小编做这个实验的时候发现很多人都用了hunt工具,但我一直没安装成功,安装成功后也监控不了(如果有人可以编译它的源码就可能可以用这个工具了),所以我直接通过抓包构造包来完成命令注入。 2.题目 (1)使用Netwox命令行工具构造任意
TCP
, UDP, IP数据包。 (2)用SYN flood攻击靶机的ftp服务。 (3)伪造一个A到B的RST数据包来终端他们之间的连接。 (4)利用
TCP
会话劫持攻击在
浅谈socket传输文件速率优化
前言 最近有个需求,就是在需要提升换机助手的传输文件的传输
速度
。先来看看什么是换机助手。 一般厂家的换机助手都长这个样子,就是将旧手机的一些数据拷贝到新手机上去。数据一般包括:联系人,短信,壁纸,图片,音乐,视屏,文件,设置项等等。然后传输都是使用的wifi 或者wifi 直连连接后通过socket 协议去传输文件。这篇文章
重在
说明如何提高socket的传输
速度
。下面先说几个概念: 1.wifi 和wifi p2p(直连) Wi-Fi Direct是一种全新的技术,即使在没有传统的Wi-Fi网络或Wi-
网络编程---
TCP
/UDP套接字编程原理
本篇介绍的是Linux下的网络编程,故有些接口是不适用于Windows的,但是具体概念和实现方法是大体一致的 介绍 网络编程套接字(socket)也是进程间通信的一种方式,但是不同于管道,消息队列,共享内存的是socket不仅可以实现本机内不同进程间的通信,也可以实现网络中两台不同主机间的进程通信。 socket相当于是一个文件描述符,我们将数据写入socket中,再发到目标主机,目标主机接...
本题没有题解和讨论,提交代码中没人写注释,求大佬解释一下本题
公司:网易 岗位:运营岗 状态:已经实习一段时间工作氛围:同事都是比较nice,mentor很好,遇到
问题
他们都是主动帮我,并没有因为我是实习生而忽略我,也没有。自我介绍,问了点项目【计算机网络】
TCP
/UDP的区别
TCP
连接,拥塞
控制
,
发送
窗口之类的HTTP方法,和HTTPS的区别【算法】动态规划和贪心区别,举例【手撕。问的也是常见的八股。三道题,感觉写的都不对第一题改装二
分
,一见logn一般都是二
分
第二题,应该是dp或贪心,不太会第三题,感觉不应该是我这个思路class Solution {pu。
网络数据安全赛道:数据安全产业人才能力挑战赛--部
分
WP
2023年4月1日,在北京精卫中心男科王医师、北京精卫中心精神科夏主任的带领下,我们三个屁民
参与
了一次数据大赛,当然了,结果也是很好的,那就是
重在
参与
,索性
参与
都
参与
了,就要有一个良好的输出,对成果经验进行一个总结。选择判断一共是50道题,都是一些理论题,很多题让人发蒙,在北京精卫中心男科王医师也就是我们尊敬的王队长的带领下,我们答上来41道题。
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章