每个客户端有多个NetworkStreams



我最近开始接触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",它是根据数据包数据处理的。这很好,但也有一个单独的情况,我需要在发送请求后立即检索数据。

每个客户端有两个流可以吗?在同一个端口上这样做可能吗?应该如何处理?从本质上讲,我希望能够发送数据,然后立即接收数据(阻塞方式)。

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

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

Mx

相关内容

  • 没有找到相关文章

最新更新