社区
C++ 语言
帖子详情
TCP中的一点问题。。
muguayike
2008-12-03 11:15:25
在客户机上进行TCP连接的时候,调用connect()方法时是不需要进行绑定的,但如果我给他绑死在一个本地端口上,像服务器上那样绑再进行connect()会有什么问题吗?
...全文
108
2
打赏
收藏
TCP中的一点问题。。
在客户机上进行TCP连接的时候,调用connect()方法时是不需要进行绑定的,但如果我给他绑死在一个本地端口上,像服务器上那样绑再进行connect()会有什么问题吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
muguayike
2009-01-06
打赏
举报
回复
呵呵,都忘了结贴了。试过了是可以的。。
半吊子全栈工匠
2008-12-03
打赏
举报
回复
这种情况也是有的,典型的应用情形是Server Call back client。
TCP
协议-
TCP
粘包
问题
一、前言 我们知道,
TCP
是一个面向字节流的传输层协议。“流” 意味着
TCP
所传输的数据是没有边界的。这不同于 UDP 协议提供的是面向消息的传输服务,其传输的数据是有边界的。
TCP
的发送方无法保证对方每次收到的都是一个完整的数据包。于是就有了粘包、拆包
问题
的出现。粘包、拆包
问题
只发生在
TCP
协议
中
。 二、什么是粘包、拆包? 假设客户端向服务器连续发送了两个数据包,用 packet1 和 packet2 来表示,那么服务端收到的数据可以分为下面三种情况: 第一种情况,接收端正常...
C++
中
的
TCP
通信
TCP
通信服务端和客户端代码是不同的。首先,服务端有一个ServerSocket,初始化以后(包括设置IP和端口,绑定监听等过程),这些都设置好以后,就可以使用accept()方法等待客户端连接了,这个方法是阻塞的。一旦连接成功,就会返回一个新的Socket,使用这个Socket就可以接收数据和发送数据了。客户端自始始终都只有一个Socket,这个Socket初始化以后,使用connect()方法和服务器进行连接,
TCP
中
的粘包、拆包
问题
产生原因及解决方法
粘包/拆包
问题
产生原因: 发生
TCP
粘包或拆包有很多原因,现列出常见的几点: 要发送的数据大于
TCP
发送缓冲区剩余空间大小,将会发生拆包。 待发送数据大于MSS(
TCP
报文长度 -
TCP
头部长度 > MSS最大报文长度),
TCP
在传输前将根据MSS大小进行拆包分段发送。 要发送的数据小于
TCP
发送缓冲区的大小,
TCP
将多次写入缓冲区的数据包合并为一次发送,将发生粘包(Nagle算法优化,避免
tcp
报文头重脚轻的情况发生) 接收数据端的应用层没有及时读取接收缓冲区
中
的数据,将发生粘包。
TCP
重传计时器的
一点
看法
引入:
TCP
杂项
问题
有关
TCP
的
问题
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章