1

我有以下设置:

  • 2 台 Ubuntu 机器(服务器和客户端)
  • 在“服务器”上,我正在运行它以将收到的所有数据回显给发送者(客户端):

    ncat -e /bin/cat -v -l 12345
    
  • 在客户端我有一个简单的应用程序,它只连接到远程套接字:socket() -> setsockopt() -> connect()

所以......我的问题是:是否可以检查是否有其他应用程序已经从客户端应用程序连接到套接字?我希望在任何给定时间只有一个进程连接到套接字,并且我想从客户端应用程序中检查这一点。这可能吗?在谷歌搜索 3 小时后,我找不到任何相关的东西:(

(对不起,没有网络编程经验)

4

3 回答 3

2

不,客户端无法查看有多少其他客户端连接到服务器。

为了能够检索此信息,需要在客户端和服务器上使用特定于应用程序的协议。

无论如何,有一个特殊情况:如果客户端知道最多 N 个客户端可以连接到服务器,并且它自己的连接尝试被拒绝,它可以假设 N 个客户端已经连接到服务器。


ncat要设置并行连接句柄的最大数量,请使用它的选项-m/ --max-conns。逐字形式man ncat

-m numconns, --max-conns numconns(指定最大连接数)。Ncat 实例接受的最大同时连接数。100 是默认值。

于 2013-01-07T18:29:00.600 回答
1

跑:

netstat -an | grep <your server port port number> 

在您的客户端计算机上查看任何现有的 TCP 连接。

于 2013-01-07T14:44:04.393 回答
0

接受一个客户端后,您不能关闭服务器上的侦听套接字吗?如果没有侦听套接字,则没有更多的客户端能够连接。一旦你放弃了你的一个客户端,你就可以再次打开监听套接字,为另一个客户端做好准备。这样,如果服务器忙,客户端将看到连接“失败”,否则将正常连接。

这种方法的缺点是客户端无法确定无法连接的确切原因,这可能是因为客户端很忙(只有一个客户端),也可能是因为其他问题。这有关系吗?

于 2013-01-07T14:43:03.387 回答