我正在开发一个客户端-服务器应用程序。
我将 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);
我该怎么做才能让客户端知道哪个响应转到哪个方法?
谢谢