我最近开始进入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”,它根据分组数据处理。这很好用,但也有一个单独的情况,我需要在发送请求后立即检索数据。
每个客户端有两个流吗?这甚至可以在同一个端口上进行吗?应如何处理?基本上,我希望能够在阻塞方式之后立即发送然后接收数据。
答案 0 :(得分:1)
您可以独立地以线程安全的方式从网络流中读取和写入。即从一个线程读取并从另一个线程写入。
如果您签出开源网络通信库networkComms.net,您可以在发送方法SendPacket()(line 1304)和接收方法IncomingPacketHandler()({{3})中看到它是如何独立实现的。 })。
的Mx