【问题标题】:How I can send message from server to client using the port?如何使用端口将消息从服​​务器发送到客户端?
【发布时间】:2016-11-16 14:33:59
【问题描述】:

我正在使用 Tcplistener 在端口上侦听请求。当请求来自客户端时,我想知道发出请求的客户端 IP。 问题是:服务器和所有客户端都使用相同的 Ip

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

【问题讨论】:

    标签: c# client-server tcp-ip


    【解决方案1】:

    客户端没有监听 incoming 连接,因此服务器向客户端发送消息的唯一方法是使用 现有 连接,这是以前的由客户建立。

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

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

    您的客户端当前发送数据并立即关闭连接,但您必须修改它们以从 NetworkStream 读取数据才能接收任何内容。

    有大量可用的教程,我认为您只是用谷歌搜索了错误的关键字。你试过c# chat tutorial之类的吗?

    【讨论】:

      【解决方案2】:

      您在同一台计算机上运行它们。这就是 IP 始终相同的原因。

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

      它的工作方式是:

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

      【讨论】:

      • FTP 使用它,因此在大文件传输期间控制端口不会被占用 - 但即使在控制端口上,数据也会双向流动。对于简单的通信,无论您是否在同一台计算机上,都不需要两个活动连接即可​​进行对话。
      • 如果你查看@C.Evenhuis 的快照,你会注意到他正试图这样做,即文件传输。
      • 你说得对,如果需要双向通信文件传输期间,你的解决方案可以解决这个问题。
      猜你喜欢
      • 2017-01-12
      • 2017-09-15
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-15
      相关资源
      最近更新 更多