如何使用TcpListener和TcpClient创建双工连接?

the*_*row 4 .net c# sockets network-programming tcp

我有一种需要并行发送和接收信息的情况.
我的协议可以定义读端口和写端口.

我目前有以下代码:

public void Listen()
{
    ThreadPool.SetMinThreads(50, 50);
    listener.Start();

    while (true)
    {
        var context = new ListeningContext(listener.AcceptTcpClient(), WritePort);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从我传递的TcpClient创建另一个侦听器?

Mat*_*vis 14

TcpClient对象包装一个NetworkStream对象.您可以使用访问该对象的GetStream()方法,然后使用该方法从网络中读取数据并将数据写入网络.MSDN文章中说明如下:TcpClientNetworkStreamNetworkStream

可以在NetworkStream类的实例上同时执行读写操作,而无需同步.只要有一个用于写操作的唯一线程和一个用于读操作的唯一线程,读写线程之间就不会存在交叉干扰,也不需要同步.

使用该TcpListener对象侦听传入的连接.使用TcpClient从调用返回的对象与远程端点AcceptTcpClient()进行通信(读取写入).