private async Task ProcessConfigRequestAsync(TcpClient client) { try { byte[] appRequestBytes = new byte[4]; Server.Logger.Debug("config request received."); var nstream = client.GetStream(); int resultByte = await nstream.ReadAsync(appRequestBytes); Server.Logger.Debug("appRequestBytes received."); if (resultByte == 0) { Console.WriteLine("invalid request"); } try { byte[] arrangedIds = ConnectionManager.ArrageConfigIds(appRequestBytes); Server.Logger.Debug("apprequest arranged"); await nstream.WriteAsync(arrangedIds); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Console.WriteLine("arrangedIds written."); } catch (Exception e) { Console.WriteLine(e); throw; } }
private async Task ProcessConfigRequestAsync(TcpClient client) { try { //长度固定4个字节 int configRequestLength = 3; byte[] appRequestBytes = new byte[configRequestLength]; Server.Logger.Debug("config request received."); var nstream = client.GetStream(); //1.读取配置请求1 int resultByte = await nstream.ReadAsync(appRequestBytes); Server.Logger.Debug("appRequestBytes received."); if (resultByte == 0) { CloseClient(client); return; } //2.根据配置请求1获取更多配置信息 int appCount = (int)appRequestBytes[2]; byte[] consumerPortBytes = new byte[appCount * 2]; int resultByte2 = await nstream.ReadAsync(consumerPortBytes); Server.Logger.Debug("consumerPortBytes received."); if (resultByte2 == 0) { CloseClient(client); return; } //3.分配配置ID,并且写回给客户端 try { byte[] arrangedIds = ConnectionManager.ArrageConfigIds(appRequestBytes, consumerPortBytes); Server.Logger.Debug("apprequest arranged"); await nstream.WriteAsync(arrangedIds); } catch (Exception ex) { Logger.Debug(ex.ToString()); } Logger.Debug("arrangedIds written."); } catch (Exception e) { Logger.Debug(e); throw; } }
private async Task <bool> ProcessAppRequestProtocol(TcpClient client, bool IsReconnect = false) { Server.Logger.Debug("Now processing request protocol...."); NetworkStream nstream = client.GetStream(); //1.读取配置请求1 //如果是重连请求,则读取接下来5个字符,清 //空服务端所有与该client相关的所有连接配置 if (IsReconnect) { int clientIdRequestLength = 2; byte[] clientRequestBytes = new byte[clientIdRequestLength]; int resultByte0 = await nstream.ReadAsync(clientRequestBytes); if (resultByte0 == 0) { CloseClient(client); return(true); } // //CloseClient( CloseAllSourceByClient(StringUtil.DoubleBytesToInt(clientRequestBytes)); } int configRequestLength = 3; byte[] appRequestBytes = new byte[configRequestLength]; int resultByte = await nstream.ReadAsync(appRequestBytes); Server.Logger.Debug("appRequestBytes received."); if (resultByte == 0) { CloseClient(client); return(true); } //2.根据配置请求1获取更多配置信息 int appCount = (int)appRequestBytes[2]; byte[] consumerPortBytes = new byte[appCount * 2]; int resultByte2 = await nstream.ReadAsync(consumerPortBytes); Server.Logger.Debug("consumerPortBytes received."); if (resultByte2 == 0) { CloseClient(client); return(true); } //NSPClient nspClient; //3.分配配置ID,并且写回给客户端 try { byte[] arrangedIds = ConnectionManager.ArrageConfigIds(appRequestBytes, consumerPortBytes); Server.Logger.Debug("apprequest arranged"); await nstream.WriteAsync(arrangedIds); } catch (Exception ex) { Logger.Debug(ex.ToString()); } finally { client.Close(); } ////4.给NSPClient关联configclient //nspClient.LastUpdateTime Logger.Debug("arrangedIds written."); return(false); }
private async Task <bool> ProcessAppRequestProtocol(TcpClient client, bool IsReconnect = false) { Server.Logger.Debug("Now processing request protocol...."); NetworkStream nstream = client.GetStream(); int clientIdFromToken = 0; //1.读取配置请求1 //如果是重连请求,则读取接下来5个字符,清 //空服务端所有与该client相关的所有连接配置 //TODO !!!!兼容原有的重连逻辑 //TODO !!!!获取Token,截取clientID,校验 clientIdFromToken = await GetClientIdFromNextTokenBytes(client); //if (IsReconnect) 因为加入了始终校验的机制,取消重连规则 //{ ServerContext.CloseAllSourceByClient(clientIdFromToken); // } //1.3 获取客户端请求数 int configRequestLength = 3; byte[] appRequestBytes = new byte[configRequestLength]; int resultByte = await nstream.ReadAsync(appRequestBytes); Server.Logger.Debug("appRequestBytes received."); if (resultByte == 0) { CloseClient(client); return(true); } //2.根据配置请求1获取更多配置信息 int appCount = (int)appRequestBytes[2]; byte[] consumerPortBytes = new byte[appCount * 2]; int resultByte2 = await nstream.ReadAsync(consumerPortBytes); Server.Logger.Debug("consumerPortBytes received."); if (resultByte2 == 0) { CloseClient(client); return(true); } //NSPClient nspClient; //3.分配配置ID,并且写回给客户端 try { byte[] arrangedIds = ConnectionManager.ArrageConfigIds(appRequestBytes, consumerPortBytes, clientIdFromToken); Server.Logger.Debug("apprequest arranged"); await nstream.WriteAsync(arrangedIds); } catch (Exception ex) { Logger.Debug(ex.ToString()); } finally { client.Close(); } ////4.给NSPClient关联configclient //nspClient.LastUpdateTime Logger.Debug("arrangedIds written."); return(false); }