我有一些关于套接字编程的基本问题。我正在尝试编写一个程序(在C,linux中),其中几个客户端进程连接到服务器进程,并且客户端也需要连接到自己。虽然客户端将驻留在不同的机器上,但它们位于同一台机器上也是一种情况。这些是我的问题。
两个客户端进程可以在单独的端口上相互通信吗?在这种情况下,它们都不会监听端口(就像服务器的工作方式)。它们只是使用套接字连接到端口并相互通信。这可能吗?
如果没有,我如何在客户之间进行沟通?
对此有任何想法都会有所帮助。感谢。
答案 0 :(得分:2)
没有,在TCP中这是不可能的。在TCP中建立连接时,您始终连接到侦听端口,因此其中一个客户端必须侦听。
其中一个客户端需要打开监听端口,但是哪一个? 将服务器用作仲裁者!使用服务器管理的协议:
如果你问两个进程是否可以在同一台机器上的同一端口上侦听,那么答案就是否定。但是使用上述协议可以避免这种情况。
答案 1 :(得分:1)
套接字连接总是需要一个连接和一个监听端 - 一方需要监听。让一个客户端进程创建一个侦听端口,另一个连接到此端口。
答案 2 :(得分:1)
如果我对您正在寻找的答案是正确的:是的,同一台机器上的两个进程可以连接到同一个端口。它只是两个不同的实体试图连接到服务器。