C#在服务器-客户端模型中建立客户端-客户端连接

时间:2019-07-25 07:12:33

标签: c# tcp server connection client

我正在使用C#TcpListener和TcpClient编写客户端服务器应用程序。这是我现在所拥有的:

//Server
class Listener
{
  List<Client> clients; //list of clients
  TcpListener listener;

  //client accepting method
  async void Listen()
  {
    while (Listening)
    {
      Client client = new Client(await listener.AcceptTcpClientAsync());
      clients.Add(client).
      client.Exchange(); //wait for client's messages
    }
    //...
  }
}

class Client //client handling class
{
  TcpClient conn;
  public Client(TcpClient conn)
  {
    this.conn = conn;
  }
}

和一个简单的客户端代码,该代码仅连接到服务器,等待来自服务器的消息并在单击按钮时发送消息,服务器将广播该消息给所有其他用户。现在,我希望能够在两个客户端之间建立直接连接(用于私人消息传递和其他功能)。

我知道TcpClient中有一个Socket属性,而Socket中有Local / RemoteEndPoint属性,因此服务器已经具有有关这两个客户端主机的一些信息。我什至尝试用另一个客户端RemoteEndPoint创建一个Socket,但是显然,这不起作用,因为服务器正在使用端口。可以通过服务器通知两个客户端所需的信息(客户端类允许分别与客户端一起玩),但是如何为两个客户端静默建立TCP连接(即没有防火墙消息),即使是隐藏在防火墙和NAT-下的普通客户端也是如此。路由器?

0 个答案:

没有答案