【问题标题】:Two way communication across TCP clients跨 TCP 客户端的双向通信
【发布时间】:2014-02-24 04:52:40
【问题描述】:

首先,我想把它当作一个学习练习,我对 WCF 等其他技术不感兴趣 :)

我想要做的是有 2 个应用程序,每个应用程序都运行在可以相互通信的不同机器上。

我有一个运行示例,其中一个应用程序是服务器,另一个应用程序是客户端。这通过在服务器应用程序中使用 TcpListener 来工作,它接受 TCPClient,然后在 while 循环中继续读取,等待来自客户端应用程序中运行的 TCPClient 的数据。

这允许我通过读取/写入任一应用程序中的 TCPClients 流来回发送数据。

虽然我可以读/写两种方式,但它只有客户端可以实例化一个事件,因为它只是等待某事发生的服务器。我想扩展它,以便客户端 App 也可以接收从服务器实例化的消息。

所以我认为我在每个应用程序中都需要 2 个 TcpClients 是否正确?一个用来发送数据,另一个一直在等待数据?

【问题讨论】:

  • 对...你会在两个地方都使用 same 应用程序,并让它有一个服务器和一个客户端。
  • TCP 是一种双向协议,这意味着您可以在连接的套接字上发送和接收数据。但是,要连接两个端点,充当服务器的端点必须监听传入的连接。

标签: c# sockets tcpclient


【解决方案1】:

正如两位评论者所说,在这种情况下,您通常在双方都有相同的应用程序,既充当客户端又充当服务器。由于初始连接通常是响应用户交互(或其他一些外部事件)而启动的,因此正常模式是让所有应用程序以“侦听”模式启动(作为服务器)。一旦在一个应用上请求连接,它就会停止侦听并尝试连接到其他应用。

如果应用程序要在启动时尝试连接,最简单的方法是如上所述(全部在服务器模式下),并在切换到客户端模式之前延迟随机时间。如果连接失败,请退回到服务器模式并再次延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多