我正在开发一个客户端 - 服务器应用程序。
我将TCPClient用于服务器和客户端。
服务器侦听并响应,客户端将发送和接收。来自服务器的每个响应都包含不同的消息长度。
客户有2个请求。一个是ping请求,另一个是发送数据请求。
我创建了一个每隔10秒ping一次服务器的线程。
当用户按下发送按钮时,客户端会发送数据请求。
服务器通过向客户端发回2个字节来响应ping请求。
服务器通过发回8个字节来响应数据请求。
这是我遇到的问题。
ping线程有时会在用户按下发送按钮的同时将请求发送到服务器。
现在数据请求方法是从套接字读取并期望8个字节,但只有2个字节因此挂起很长时间。
这是数据请求方法的片段:
byteBuffer = new byte[8];
remainingBytes = byteBuffer.Length;
numberOfBytesRead = netStream.Read(byteBuffer, index, remainingBytes);
这是ping线程的片段:
byteBuffer = new byte[2];
remainingBytes = byteBuffer.Length;
numberOfBytesRead = netStream.Read(byteBuffer, index, remainingBytes);
我能做些什么让客户知道哪种方法响应哪种方法?
由于
答案 0 :(得分:2)
你需要:
读取线程读取一个字节,决定它是什么,读取需要的字节数,然后响应。