每个客户端有多个NetworkStream

时间:2012-02-09 12:16:54

标签: c# networking stream networkstream

我最近开始进入NetworkStreams,我有一个问题。我正在创建一个线程,并处理所有传入的消息。

以下是用来说明这一点的代码:

client.Connect(serverEndPoint);
clientStream = client.GetStream();
client.NoDelay = true;

ctThread = new Thread(getMessage);
ctThread.Start();  

private void getMessage()
{
    while (true)
    {
        Byte[] data = new Byte[800];
        String responseData = String.Empty;
        Int32 bytes = clientStream.Read(data, 0, data.Length);
        responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);

        MessageReceived(this, new ClientMessageEventArgs(responseData));
    }
}

在上面,我提出了一个事件“MessageReceived”,它根据分组数据处理。这很好用,但也有一个单独的情况,我需要在发送请求后立即检索数据。

每个客户端有两个流吗?这甚至可以在同一个端口上进行吗?应如何处理?基本上,我希望能够在阻塞方式之后立即发送然后接收数据。

1 个答案:

答案 0 :(得分:1)

您可以独立地以线程安全的方式从网络流中读取和写入。即从一个线程读取并从另一个线程写入。

如果您签出开源网络通信库networkComms.net,您可以在发送方法SendPacket()(line 1304)和接收方法IncomingPacketHandler()({{3})中看到它是如何独立实现的。 })。

的Mx