在 C# dot net 中创建支持多客户端连接的服务器

Creating a server which supports multi client to connect in C# dot net

我正在尝试用 C# dot net 编写一个聊天应用程序,它有两个方面,一个服务器端和一个客户端。 服务器端是唯一的,但客户端可能不止一个,数据传输应该加密,确实我会在双方实现加密数据通信。

我认为数据加密的想法在这段时间可能是更复杂的任务,所以我会在一开始不实施数据加密的情况下编写项目吗?

谢谢你的好主意。

你可以用 TcpClient (client) and with TcpListener(服务器) 而通信和数据传输可以与线程/异步任务一起使用以获得异步和多线程功能。

读这个: http://csharp.net-informations.com/communications/csharp-multi-threaded-server-socket.htm

*编辑:

如果不向您提供至少一小部分项目和代码就很难解释,因此我在上面发布了 link,我认为它确实可以帮助您开始。

至于从一个客户端到另一个客户端的路由, 你可以通过多种方式做到这一点。 一种方法是给每个客户一个唯一的 ID 或者使用一个唯一的用户名(与大多数聊天一样)并发送那个唯一的用户名。您可以在每次发送带有分隔符的数据时创建一个字符串,并在收到时对其进行解析。

例如:

这将在客户端:

string FullMessage = "$#1name" + "yourName" + "$#2name" + "$#1message" + "YourMessage" + "$#2message");

这将在服务器端:

string MessageRecieved = GetSubstringByString("$#1message", "$#2message", FullMessage);
string Name = GetSubstringByString("$#1name", "$#2name", FullMessage);

public string GetSubstringByString(string startString, string endString, string fullString)
{
    return fullString.Substring((fullString.IndexOf(startString) + startString.Length), (fullString.IndexOf(endString) - fullString.IndexOf(startString) - startString.Length));

    }