我正在设置一个服务器来使用 TcpListener 读取一些网络客户端。客户端发送一些数据,我验证该数据并发送对该数据的响应,客户端保持连接并发送第二个响应,然后我验证该数据并发送回响应,就像登录服务器两次一样。第一次登录被发送回客户端就好了,但是客户端第二次响应服务器并没有显示它从客户端收到了更多的数据。
我已经通过设置一个虚拟客户端(真正的客户端是基于手机的 ODB2)对其进行了测试。设置了虚拟客户端后,我确实验证了第一次握手发生了,但是当客户端发送第二组文本时,它没有显示在服务器上。
class Program
{
static private TcpListener listener = null;
static private TcpClient client = null;
static private NetworkStream stream = null;
static private int iCount = 0;
static Int32 port = 8090;
static IPAddress localAddr = IPAddress.Parse("192.168.1.17");
static void Main(string[] args)
{
listener = new TcpListener(localAddr, port);
listener.Start();
while (true)
{
try
{
client = listener.AcceptTcpClient();
ThreadPool.QueueUserWorkItem(ThreadProc, client);
}
catch (IOException ioex)
{
RestartStream();
}
}
}
private static void ThreadProc(object obj)
{
var client = (TcpClient)obj;
Byte[] bytes = new Byte[client.ReceiveBufferSize];
stream = client.GetStream();
try
{
int bytesRead = stream.Read(bytes, 0, (int)client.ReceiveBufferSize);
string returndata = Encoding.ASCII.GetString(bytes, 0, bytesRead).Replace("-", "");
byte[] sendBytes;
if (returndata.ToLower().StartsWith("7e") && returndata.ToLower().EndsWith("7e"))
{
//… do stuff with the data and send it back to the client
sendBytes = Encoding.Default.GetBytes(login1);
stream.Write(sendBytes, 0, sendBytes.Length);
stream.Flush();
}
else
{
SaveStream(returndata);
}
}
我需要发生的是我的理解是客户端始终保持连接并一遍又一遍地发送数据,我的系统似乎接受它一次然后停止接收它,我需要它继续接收客户端数据并处理它。
喵喔喔
相关分类