我写了一段代码,以便通过tcp / ip protocole监听远程客户端。 我能够从客户那里收到数据。但我不知道如果客户端停止发送数据以完成连接如何knwo。 这是我的代码:
static void Main(string[] args)
{
TcpListener listener = new TcpListener(IPAddress.Any, 34400);
TcpClient client;
listener.Start();
while (true) // Add your exit flag here
{
client = listener.AcceptTcpClient();
ThreadPool.QueueUserWorkItem(ThreadProc, client);
}
}
private static void ThreadProc(object state)
{
string imei = string.Empty;
var client = ((TcpClient) state);
NetworkStream nwStream = ((TcpClient) state).GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
try
{
while (true)
{
int bytesRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize);
string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);
if (imei == string.Empty)
{
imei = dataReceived;
Console.WriteLine("IMEI received : " + dataReceived);
Byte[] b = { 0x01 };
nwStream.Write(b, 0, 1);
}
else
{
int dataNumber = Convert.ToInt32(buffer.Skip(9).Take(1).ToList()[0]); ;
var result = 0;
while (dataNumber > 0)
{
var parser = new TeltonikaDevicesParser(false);
result = parser.Decode(new List<byte>(buffer), imei);
dataNumber--;
}
nwStream.Write(
result > 0 ? new byte[] { 0x00, 0x00, 0x00, 0x01 } : new byte[] { 0x00, 0x00, 0x00, 0x00 }, 0,
4);
}
}
答案 0 :(得分:0)
你没有。 TCP / IP并不关心在一端关闭连接。只有当您尝试通过数据发送数据时才会断开连接状态。
您必须通过TCP / IP实现简单协议才能完成代码: