public void Handle() { try { int len = _client.ReadInt(); var header = Encoding.UTF8.GetString(_client.ReceiveDatas(len)).FromJson <CommandHeader>(); this.FilePath = header.FilePath; //ConnectionHelper.Register(this); _db = new StorageDB(header.FilePath, header.KeyName, header.KeyType); //读取现有数据 if (header.ReadData) { _db.ReadData((content) => { var bs = Encoding.UTF8.GetBytes(content); _client.Write(bs.Length); _client.Write(bs); }); _client.Write((int)-1); } _ready = true; new Thread(processAction).Start(); while (true) { len = _client.ReadInt(); var action = Encoding.UTF8.GetString(_client.ReceiveDatas(len)).FromJson <ContentAction>(); if (action.Type == ActionType.CheckSaved) { while (_backupQueue.Count > 0) { Thread.Sleep(10); } Thread.Sleep(1000); break; } else { if (!header.IsAsync) { _client.Write(true); } } _backupQueue.Enqueue(action); _backupEvent.Set(); } } catch { } //ConnectionHelper.UnRegister(this); _exited = true; _client.Dispose(); }
static void onSocket(Socket socket) { Way.Lib.NetStream client = null; try { client = new Way.Lib.NetStream(socket); client.ReadTimeout = 0; if (ServerCert != null) { var sslts = new SslStream(client.InnerStream, false, new RemoteCertificateValidationCallback(RemoteCertificateValidationCallback)); sslts.AuthenticateAsServer(ServerCert, true, NetClient.SSLProtocols, false); client.InnerStream = sslts; } var flag = client.ReadInt(); if (flag == 0 || flag == 1179010630)//健康检查 { client.Write(Encoding.UTF8.GetBytes("ok")); } else if (flag == 1)//get key { //data里面前面四个字节包含了长度,所以不用先Write(数据长度) client.Write(data); client.ReadInt(); } else if (flag == 2) //disable token { var expireTimeLong = client.ReadLong(); //utc过期时间 var len = client.ReadInt(); var token = System.Text.Encoding.UTF8.GetString(client.ReceiveDatas(len)); _ClientManager.DisableToken(token, expireTimeLong); client.Write(true); } else if (flag == 888)//for test { client.Write(4); client.Write(888); client.ReadInt(); } else if (flag == 999) { //data里面前面四个字节包含了长度,所以不用先Write(数据长度) client.Write(data); _ClientManager.AddClient(client).Handle(); } } catch (SocketException) { } catch (Exception ex) { Logger.LogError(ex, ex.Message); } finally { client?.Dispose(); } }
static void onSocket(Socket socket) { Way.Lib.NetStream client = null; try { client = new Way.Lib.NetStream(socket); client.ReadTimeout = 0; if (ServerCert != null) { var sslts = new SslStream(client.InnerStream, false, new RemoteCertificateValidationCallback(RemoteCertificateValidationCallback)); sslts.AuthenticateAsServer(ServerCert, true, NetClient.SSLProtocols, false); client.InnerStream = sslts; } //data里面前面四个字节包含了长度 client.Write(data); client.ReadInt(); } catch (SocketException) { } catch (Exception ex) { Logger.LogError(ex, ex.Message); } finally { client?.Dispose(); } }