C# 服务器与多个不同的客户端通信

C# 服务器与多个不同的客户端通信,c#,.net,tcp,ip,C#,.net,Tcp,Ip,所以我被指派做一个小的聊天功能,在这个功能中,多个客户端应该能够连接到一个服务器并与之通信,然后服务器应该能够选择它想要与谁通信。(从下拉列表或其他地方) 到目前为止,在一些教程的帮助下,我能够做到的是,客户端可以连接到服务器并与之通信,但仅此而已。服务器无法返回通信 我对此非常陌生,对C#和TCP/IP都知之甚少 关于起点,我想看看。双工允许您订阅服务并使用双向通信发送更新 基本上,您可以使用两种方法将服务器创建为WCF服务:getclients和sendMessage。从那里,客户端可以订阅

所以我被指派做一个小的聊天功能,在这个功能中,多个客户端应该能够连接到一个服务器并与之通信,然后服务器应该能够选择它想要与谁通信。(从下拉列表或其他地方)

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

我对此非常陌生,对C#和TCP/IP都知之甚少


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

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


只要您还不习惯使用套接字,这将比创建协议和管理连接列表容易得多。还有一些使用WCF作为聊天媒介的例子,可以在上找到。

关于TCP知识,我重新连接了Barbara Heckler的视频,其中她展示了此类服务器的一个简短实现。不幸的是在Java中,但是非常有用

我重新连接了0-15分钟的基本(UDP)和15-40分钟的TCP连接,以及为什么TCP需要多线程,而UDP不需要多线程


真的很简单。您成功提取并用于读取客户端发送的内容的TCP流也可以写入,以便发送回某些内容,因此您所要做的就是将连接和流对象移出某种共享集合,以便您的服务器端发送逻辑可以在它想要发送某些内容时获取它。类似地,在客户机中,您将对TCP流发出读取命令,以读取服务器发送的内容

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