跨TCP客户端的双向通信

时间:2014-02-23 18:47:01

标签: c# sockets tcpclient

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

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

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

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

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

所以我认为我在每个应用程序中都需要2个TcpClient吗?一个用于发送数据,另一个总是在等待数据?

1 个答案:

答案 0 :(得分:1)

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

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