我有一台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