111,094
社区成员




private void DoListen()
{
listenerCar = new TcpListener(IPAddress.Parse(serverip), int.Parse(Tools.CarPort));
listenerCar.Start();
while (true)
{
try
{
Socket ss = listenerCar.AcceptSocket();
RevCar = new Thread(new ParameterizedThreadStart(RevCarInfo));
SocketThread st = new SocketThread(ss, RevCar);
RevCar.Start(st);
RevCar.sta
//ThreadPool.QueueUserWorkItem(new WaitCallback(RevCarInfo),ss); //这里试过用线程池结果还是因为通信线程不断增加而死机了
CheckOnline();//查询在线客户端
}
catch(Exception err)
{
Tools.WriteTxtLog("监听主线程:\r\n" + err.ToString());
}
}
}
private void RevInfo(object obj)
{
SocketThread soct = (SocketThread)obj;
Socket tempsocket1 = soct.Sock;
DateTime dtt = DateTime.Now;
int i;
try
{
bool keepalive = true;
while (keepalive)
{
ArrayList arrbyte = new ArrayList();
Byte[] buffer = new Byte[1024]; //接收缓冲区 1024字节
if (tempsocket1.Connected)
{
if (tempsocket1.Poll(-1, SelectMode.SelectRead))//1000000*60
{
int bytenum = tempsocket1.Receive(buffer);
if (bytenum == 0)
{
keepalive = false;
CloseSocket(soct.Sock);
//AbortThread(soct.Pthread);
CheckOnlineCar();
break;
}
else
{
int datalength = ConvertDataLength(buffer[1], buffer[2]);
string DataInfo = System.Text.Encoding.ASCII.GetString(buffer, 0, bytenum).Trim();
string HeradInfo = DataInfo.Substring(3, 2);
SetText(HeradInfo);
switch (HeradInfo)
{
case "AS":
if (DataInfo.Substring(datalength - 1, 1) == "#")
{
for (i = 0; i < datalength; i++)
{
if (i != 1 & i != 2)
{
arrbyte.Add(buffer[i]);
}
}
byte[] ww = (byte[])(arrbyte.ToArray(typeof(System.Byte)));
byteayy(ww, tempsocket1, soct.Pthread);
arrbyte.Clear();
}
break;
case "eM":
break;
case "eG":
break;
case "AS":
break;
default:
break;
}
}
}
else
{
keepalive = false;
CheckOnline();
CloseSocket(soct.Sock);
//AbortThread(soct.Pthread);
break;
}
if (!keepalive)
{
CloseSocket(tempsocket1);
//AbortThread(soct.Pthread);
CheckOnlineCar();
break;
}
}
else
{
keepalive = false;
//AbortThread(soct.Pthread);
CloseSocket(tempsocket1);
CheckOnlineCar();
break;
}
}
}
catch (Exception ee)
{
CloseSocket(tempsocket1);
CheckOnlineCar();
}
}