2014-02-23 146 views
1

首先,我想要玩这个作为一个学习锻炼的双向沟通​​,我在其他技术,如WCF :)通过TCP客户

我试图做的是不感兴趣有2个应用程序,每个应用程序运行在不同的机器上,可以相互通话。

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

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

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

所以我正确的想我需要在每个应用程序中的2个TcpClient?一个用于发送数据,另一个始终等待数据?

+0

对......你会使用相同的** **应用在这两个地方,并使其有一个服务器和客户端。 –

+0

TCP是一种双向协议,这意味着您可以在连接的套接字上发送和接收数据。但是,要连接两个端点,将充当服务器的端点必须侦听传入的连接。 –

回答

1

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

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