2016-11-15 167 views
0

我正在使用Tcplistener在端口上侦听请求。当请求从客户端进入时,我想知道发出请求的客户端IP。 问题是:服务器和所有客户端采取相同的IP如何使用端口将消息从服​​务器发送到客户端?

所以我决定通过端口发送按摩从服务器到客户端...我在谷歌上搜索了很多但我不知道如何发送消息服务器到客户端使用端口?所以任何机构都可以帮助我?

回答

0

的客户端没有侦听传入连接,因此服务器的唯一途径将消息发送到客户端是通过使用现有连接,先前由客户确定。

您不必指定现有连接上发送消息时的端口号,您的服务器可以只使用:

Socket handlerSocket = tcpListener.AcceptSocket(); 
// a connection is now established, "handlerSocket" can be used for both receiving and sending messages 
handlerSocket.Send(...); 

您的客户目前正在发送数据,并立即关闭连接,虽然,你”将不得不修改它们以读取来自NetworkStream的数据以接收任何内容。

有大量的教程可用,我想你只是GOOGLE错误的关键字。你有没有试过类似c# chat tutorial

+0

确认清除谢谢你,我会尽量解决方案@ C.Evenhuis – kernal

0

您正在同一台计算机上运行它们。这就是为什么IP总是一样的原因。

这种东西的SOP是有两个端口:一个控制端口和一个数据端口。

其工作原理是:

  • 控制端口用于启动连接。
  • 成功连接后,服务器和客户端协商一组要用于数据的端口(本地服务器数据端口和远程客户端数据端口)。
  • 服务器从本地服务器数据端口建立到远程客户端数据端口的连接。
  • 客户端通过控制端口发出数据请求(例如命令)。
  • 服务器通过数据端口发回信息。
+0

FTP使用此所以控制端口中大型文件传输没有被占用 - 但即使在控制端口,数据流是双向的。无论您是否在同一台计算机上,对于简单通信,您都不需要两个活动连接进行对话。 –

+1

如果你看快照@ C.Evenhuis,你会注意到他正在试图做到这一点,一个文件传输。 – JuanR

+0

你有一点,如果双向通信_during_文件传输是必需的,你的解决方案将解决这个问题。 –

相关问题