C# 客户机-服务器关系混乱

C# 客户机-服务器关系混乱,c#,asyncsocket,C#,Asyncsocket,我有5台控制不同硬件的计算机。五个控制器中的一个是其他四个的主控制器。我需要通过TCPIP从主控制器向4个从控制器发送命令。我在Socket编程方面的经验非常有限 在我的系统中,哪个是客户端,哪个是服务器?在我看来,在我的配置中,服务器和客户端之间的界限可能是倾斜的。双方都需要发送和接收命令,客户机和服务器真的分离了吗,还是仅仅是约定?我可以使用同一个套接字同时将两个端点作为客户端和服务器吗基本上我可以同时监听和发送请求吗? 我正在引用MSN上的示例代码 就套接字连接而言,谁是客户机,谁是服务

我有5台控制不同硬件的计算机。五个控制器中的一个是其他四个的主控制器。我需要通过TCPIP从主控制器向4个从控制器发送命令。我在Socket编程方面的经验非常有限

在我的系统中,哪个是客户端,哪个是服务器?在我看来,在我的配置中,服务器和客户端之间的界限可能是倾斜的。双方都需要发送和接收命令,客户机和服务器真的分离了吗,还是仅仅是约定?我可以使用同一个套接字同时将两个端点作为客户端和服务器吗基本上我可以同时监听和发送请求吗?

我正在引用MSN上的示例代码


就套接字连接而言,谁是客户机,谁是服务器只是谁接受连接(服务器)和谁发起连接请求(客户机)的问题


一旦建立了连接,流量可以向任意方向流动(客户端和服务器都可以发送和/或接收数据)。

您的主控制器是服务器。当它在线时,它会监听你的奴隶宣布他们在线。它们通过作为客户端连接到服务器来实现这一点。服务器将接受这些连接

如果每个从机执行一些特殊功能,那么您应该有一条消息,客户端可以发送到服务器,指示此功能。如果系统正常运行需要所有从机,则需要等待所有从机宣布其不同的功能

然后,服务器将能够向不同的客户端发送消息或向所有客户端广播消息。每个客户端只能向服务器发送消息。如果需要客户端到客户端的通信,您可能会在服务器中实现消息转发。这样,您的客户就不需要知道其他客户的地址。他们只需要知道自己的功能,该功能将用于将消息路由到适当的客户端

我基本上是说,您需要定义一个协议,节点将通过该协议进行通信。该协议将规定哪个节点是服务器,哪个节点是客户端

如果您的协议更适合于对等网络而不是客户端服务器,那么您可能需要考虑使用UDP而不是TCP。