【问题标题】:Server communicate back to multiple different clients服务器与多个不同的客户端通信
【发布时间】:2013-01-02 10:44:16
【问题描述】:

因此,我得到了一项任务,即创建一个小型聊天功能,其中多个客户端应该能够连接到服务器并与之通信,然后服务器应该能够选择它想要与之通信的对象。 (从下拉列表或其他东西中)。

到目前为止,在一些教程的帮助下,我能够做到的是客户端可以连接到服务器并与之通信,但仅此而已。服务器无法返回通信。

我对此很陌生,对 C# 和 TCP/IP 的了解有限。

https://gist.github.com/4565988

所以我需要帮助的是服务器回复不同客户端以及客户端从服务器接收消息的方法。

感谢任何帮助!

最好的问候,弗雷德里克

【问题讨论】:

  • 您是如何设法打开只有一种方式的 TCP 连接的?根据定义,TCP 总是双向的。
  • 嗯,我想问题不在于它不是以一种方式打开的,而是我不知道如何回复。

标签: c# .net tcp ip


【解决方案1】:

关于起点,我想看看WCF Duplex Services。 Duplex 允许您订阅服务并使用双向通信发送更新。

基本上,您可以使用以下几种方法将服务器创建为 WCF 服务:getclientssendMessage。然后,客户端可以从那里订阅服务并(在连接时)获取其他订阅者的列表(您提供给 UI),然后将消息发送回服务(然后使用双工将其发送给任何人它需要)。

只要您不习惯使用套接字,这将比创建协议和管理连接列表容易得多。 code project 上还有使用 WCF 作为聊天媒介的示例。

【讨论】:

    【解决方案2】:

    对于 TCP 知识,我查看了 Barbara Heckler 的视频,其中她展示了这种服务器的简要实现。不幸的是,在 Java 中,但非常有用。

    我在 0 到 15 分钟了解基础知识 (UDP),在 15 到 40 分钟了解 TCP 连接,以及为什么 TCP 需要多线程,而 UDP 不需要。

    http://www.youtube.com/watch?v=5QzNHEcLp10

    【讨论】:

      【解决方案3】:

      真的很简单。您成功提取并用于读取客户端发送的内容的 TCP 流也可以写入以发回某些内容,因此您所要做的就是将连接和流对象移出到某种共享集合中,所以你的服务器端发送逻辑可以在它想要发送一些东西时得到它。同样,在客户端中,您将发出对 TCP 流的读取以读取服务器发送的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-08
        • 2011-08-18
        • 1970-01-01
        • 2015-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多