【发布时间】:2015-12-10 17:42:12
【问题描述】:
我正在用 C++ 开发两个使用 C Linux 套接字调用的应用程序,一个服务器和一个客户端。 服务器侦听特定端口 A 并使用接受函数检索连接。 我正在使用 int result = ::listen(mySocketFileDescriptor, 1);将最大连接数限制为 1。 顺便说一句,在服务器中,我使用 SO_REUSEADDR 选项来重用套接字以用于其他原因。
如果客户端有多个断开/连接,有时会发生奇怪的行为: 例如,客户端成功连接到服务器,但是当它发送数据时,服务器没有收到任何东西。
在客户端应用程序中,我使用 Linux 自动分配的端口连接到端口 A,我们称之为 B。 使用 netstat 我发现客户端都从套接字连接到服务器到端口 A 它使用端口 B,而另一个使用另一个端口 C。我已经调试过,我已经看到 服务器从使用 B 的套接字读取,而客户端在使用 C 的套接字上写入。
知道这种行为的原因吗?
除了我的代码可能存在的任何可能的逻辑问题之外,是否可以使服务器 建立新连接时总是丢弃旧连接?有什么可以设置的选项吗?
提前谢谢你!
【问题讨论】:
标签: c linux sockets network-programming unix-socket