我有一臺Kinect傳感器連接到PC,我的應用程序通過另一臺PC上的TCP連接請求幀。我的問題是,我無法觸發兩個請求並將幀重新連接。C#客戶端無法觸發服務器連接
這是在其被連接到所述傳感器上的服務器側的代碼:
while(running)
{
if (networkStreamReceive.DataAvailable)
{
byte[] clientRequest = new byte[8];
networkStreamReceive.Read(clientRequest, 0, clientRequest.Length);
string clientData = System.Text.Encoding.ASCII.GetString(clientRequest);
clientData = clientData.Substring(0, clientData.IndexOf("$"));
if (clientData == "1")
{
// Process sensor data.
// Takes about 5-15 ms.
}
}
}
在客戶端,它使一個請求如下:
NetworkStream serverStreamSend = clientSocketSend.GetStream();
//Send the request.
byte[] outStream = System.Text.Encoding.ASCII.GetBytes("1$");
serverStreamSend.Write(outStream, 0, outStream.Length);
Thread.Sleep(800); // Works for 1000ms and above.
serverStreamSend.Write(outStream, 0, outStream.Length);
receivedFrame = receiveFrame();
receivedFrame = receiveFrame();
其中接收幀讀取數據從流。
這隻適用於在客戶端添加至少一秒的睡眠。如果我刪除了這個睡眠,我發現客戶端可以同時觸發這兩個請求,但是卡在閱讀第二個receiveFrame。
在服務器端,我看到第一個觸發器進來了,但第二個觸發器沒有通過。當處理傳感器數據的時間僅爲10-15ms時,我無法理解爲什麼會這樣。
你有沒有考慮這樣做,而不是這條線在這裏了''ReadAllBytes' networkStreamReceive.Read(' – MethodMan 2014-10-20 19:31:12
networkStreamReceive是一個類型的NetworkStream的對象,我沒有看到一個ReadAllBytes功能。 – trycatch22 2014-10-20 19:35:57