客户端服务器关系混淆

时间:2015-11-21 15:37:17

标签: c# asyncsocket

我有5台控制不同硬件的电脑。五个中的一个是另一个的主控制器4.我需要通过TCPIP将命令从主控制器发送到4个从控制器。我对Socket编程的经验非常有限。

在我所拥有的系统中,哪个是客户端,哪个是服务器?在我看来,在配置中我有服务器和客户端之间的界限可能会有偏差。双方都需要发送和接收命令,真的是客户端和服务器的分离还是仅仅是惯例?我可以使用同一个套接字将两个端点同时作为客户端和服务器吗? 基本上我可以让两端听取和发送请求吗?

我在MSN上引用了示例代码。

Asynchronous Server Socket

Asynchronous Client Socket

2 个答案:

答案 0 :(得分:2)

就套接字连接而言,谁是客户端以及谁是服务器只是谁接受连接(服务器)以及谁发起连接请求(客户端)。

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

答案 1 :(得分:1)

您的主控制器是服务器。当它上线时,它会听你的奴隶宣布他们在线。他们通过连接到服务器作为客户端来完成此操作。服务器将接受连接。

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

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

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

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