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

时间:2010-12-14 18:06:06

标签: c# .net sockets tcp network-programming

我遇到需要并行发送和接收信息的情况 我的协议可以定义一个读端口和一个写端口。

我目前有以下代码:

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

    while (true)
    {
        var context = new ListeningContext(listener.AcceptTcpClient(), WritePort);
    }
}

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

2 个答案:

答案 0 :(得分:14)

TcpClient对象包装NetworkStream对象。您使用GetStream() TcpClient方法访问NetworkStream对象,该对象随后用于从网络读取数据和向网络写入数据。 NetworkStream的MSDN文章说明如下:

  

读写操作即可   同时进行   NetworkStream类的实例   无需同步。   只要有一个独特的线程   用于写操作和一个   用于读取操作的唯一线程,   不会有交叉干扰   读写线程之间没有   同步是必需的。

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

答案 1 :(得分:4)

TCP连接是全双工管道,请查看here。您不需要单独的端口或其他任何东西。