111,094
社区成员




public void RunKeepAlive()
{
KeepAliveThread = new Thread(new ThreadStart(RunKeepAliveThread));
KeepAliveThread.IsBackground = true;
KeepAliveThread.Start();
}
/// <summary>
/// 保持请求
/// </summary>
private static void RunKeepAliveThread()
{
while (true)
{
if (isNeedAlive)
{
Thread.Sleep(90 * 1000);
SendKeepAliveCommand();
}
}
}
public static void SendKeepAliveCommand()
{
try
{
string message = string.Empty;
message = Environment.UserName;
message += "|" + Environment.UserDomainName;
message += "|" + MessageSN;
message += "|" + "1";
message += "|" + "1";
Send(client, message);
}
catch (Exception ex)
{
log.Error("发送保持请求错误",ex);
}
}
private void AnalysisLinkData(string recv, Socket handler)
{
log.Info((handler.RemoteEndPoint as IPEndPoint).Address.ToString() + ": " + recv);//获取客户端的IP地址和端口信息
Console.WriteLine("count:" + serverLinkClientGroup.ClientGroup.Count);
this.str = string.Empty;
string[] strArray = recv.Split(new char[] { '|' });
serverLinkClient client;
client = new serverLinkClient(handler);
if ((strArray.Length >= 3) && (strArray[2] == "0"))//只有在客户端连接时,才会进入此循环
{
//serverLinkClient client;
StringBuilder builder = new StringBuilder("1=1");
builder.Append(" AND USER_ID = '" + strArray[0] + "'");
builder.Append(" AND USER_DOMAIN = '" + strArray[1] + "'");
List<Maticsoft.Model.USER_IP> modelList = this.currentuserBll.GetModelList(builder.ToString());
if ((modelList == null) || (modelList.Count == 0))
{
if (strArray[3] == "0")
{
this.userModel = new Maticsoft.Model.USER_IP();
this.userModel.ID = this.currentuserBll.GetMaxId();
this.userModel.USER_ID = strArray[0];
this.userModel.USER_DOMAIN = strArray[1];
this.userModel.TOUSER_IP = (handler.RemoteEndPoint as IPEndPoint).Address.ToString();
this.userModel.USER_PORT = new decimal?((handler.RemoteEndPoint as IPEndPoint).Port);
this.userModel.SYS_TIME = DateTime.Now.ToString();
this.currentuserBll.Add(this.userModel);
this.userModelList.Add(this.userModel);
client = new serverLinkClient(handler)
{
CLIENTIPADDRESS = this.userModel.TOUSER_IP,
CLIENTPORT = this.userModel.USER_PORT.ToString(),
CLIENTTOUSERID = this.userModel.USER_ID
};
if (serverLinkClientGroup.CheckClient(this.userModel.TOUSER_IP + ":" + this.userModel.USER_PORT) == null)
{
serverLinkClientGroup.AddNewClient(client);
client.CLIENTIPADDRESS = (handler.RemoteEndPoint as IPEndPoint).Address.ToString();
client.CLIENTPORT = (handler.RemoteEndPoint as IPEndPoint).Port.ToString();
}
}
}
else if (modelList.Count == 1)
{
modelList[0].TOUSER_IP = (handler.RemoteEndPoint as IPEndPoint).Address.ToString();
modelList[0].USER_PORT = new decimal?((handler.RemoteEndPoint as IPEndPoint).Port);
this.currentuserBll.Update(modelList[0]);
if (serverLinkClientGroup.CheckClient(modelList[0].TOUSER_IP + ":" + modelList[0].USER_PORT) == null)
{
//client = new serverLinkClient(handler);
serverLinkClientGroup.AddNewClient(client);
client.CLIENTTOUSERID = strArray[0];
client.CLIENTIPADDRESS = (handler.RemoteEndPoint as IPEndPoint).Address.ToString();
client.CLIENTPORT = (handler.RemoteEndPoint as IPEndPoint).Port.ToString();
}
}
}
Console.WriteLine("countnum:" + serverLinkClientGroup.ClientGroup.Count);
//else
//{
// Console.WriteLine("接收到数据为null{0}"+recv);
// serverLinkClientGroup.RemoveClient(client);
//}
}