2012-02-09 113 views
0

我最近開始進入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」根據分組數據。這很好,但也有一個單獨的情況,我需要在發送請求後立即檢索數據。

可以爲每個客戶端分配兩個流嗎?這甚至有可能在同一個端口上執行嗎?這應如何處理?實質上,我希望能夠在阻塞方式之後立即發送並接收數據。

回答

1

您可以獨立讀取和寫入網絡流,並以線程安全的方式寫入。即從一個線程讀取並從另一個線程寫入。

如果檢出開源網絡通信庫networkComms.net你可以看到這是如何在發送方法了sendpacket()(line 1304)獨立地實現,並且接收方法IncomingPacketHandler()(line 802)。

Mx

+0

我一直在試圖避免使用庫來進行通信,但我想我可能只是使用這個。謝謝。 – jgallant 2012-02-09 15:17:45