首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端端口随每个请求而更改

问客户端端口随每个请求而更改
EN

Stack Overflow用户
提问于 2017-02-22 18:20:17
回答 1查看 402关注 0票数 1

我试图使用C++在我的PC机(服务器)中建立一个控制器(客户端)和一个程序之间的TCP/IP连接,我用嗅探器查看客户端的请求是如何发送的,我发现来自控制器的每个连接请求都是从不同的端口和已知的IP发送的,它以随机端口数开始,对每个请求递增1,直到我重新启动控制器或服务器接收到请求,我有一些问题。

这是一种标准行为吗?知道控制器是三菱控制器,背后的想法是什么?

有什么办法,我可以获得控制器的新端口而不用接受吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 18:48:30

这与其说是控制器的行为,不如说是运行在控制器之上的网络堆栈,并且可以集成到控制器硬件中(搜索关键字: TCP卸载)。

  1. 这是预期的行为。为了防止各种不良的副作用,一个简单的例子是,前一个连接的延迟数据包试图作为以后连接的合法数据包溜进来,在使用端口的套接字关闭后很长一段时间内,端口不会被回收用于重用。您的端口可能无法使用。一个简单的解决方案就是精确地执行OP的网络堆栈所做的工作:依次分配下一个端口号。
  2. 没有BSD风格的套接字。accept接受与客户端的连接。如果您不接受,您将不会得到一个套接字来处理连接,使用该套接字,您不应该关心端口是什么。一切都被抽象化了,被隐藏在视线之外。

如果这是一个问题,请考虑使用像UDP这样的无连接协议。当检测到数据包丢失和TCP为您做的所有其他好事情时,您不会得到自动重传,但是没有连接开销。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42399336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档