public RemotingServer(INetServerSettings settings, INetChannel channel) { _channel = channel; _settings = settings; _channel.OnChannelReport += (sender, message) => { Debug.WriteLine("Server: " + message); }; this._channel.SetHandlerIdentifier("ServerHandler"); }
public RemotingClient(INetServerSettings settings, INetChannel channel, RemotingClientSetup setup) { _channel = channel; this._setup = setup; _channel.OnChannelReport += (sender, message) => { Debug.WriteLine($"Client: " + message); }; _channel.Start(settings); _channel.OnEvent += (sender, ev) => { this.OnEvent?.Invoke(sender, ev); }; this._channel.SetHandlerIdentifier("ClientHandler"); }
public void Start(INetServerSettings serverSettings) { this._serverSettings = serverSettings; IPEndPoint endpoint = this._serverSettings.GetServerAddress(); _Listener = new TcpListener(endpoint.Address, endpoint.Port); _Listener.Start(); Thread.Sleep(100); this.Report($"Listening {_Listener.LocalEndpoint}"); _Listener.BeginAcceptTcpClient(new AsyncCallback(OnAccept), _Listener); //Task receive = Task.Run(() => //{ // try // { // while (!ct.IsCancellationRequested) // { // using (TcpClient tcpClient = _Listener.AcceptTcpClient()) // Waiting for a client // { // using (_NetworkStream = tcpClient.GetStream()) // { // NetPackage response = this._handler.ProcessRequest(_NetworkStream, (ev) => { this.OnEvent(this, (ServiceEvent)ev); }); // if (response != null) // _NetworkStream.Write(response.Data, 0, response.Data.Length); // } // } // } // } // catch (SocketException e) when (e.SocketErrorCode == SocketError.Interrupted) // { // // throw new OperationCanceledExeption(); // } // catch (Exception ex) // { // this.Report(ex.Message); // } //}, ct); Task send = Task.Run(() => { while (!this.tokenSource.IsCancellationRequested) { SendUnit unit = _PackageQueue.Take(); if (unit == null) { break; } using (TcpClient sClient = new TcpClient()) { //sClient.ReceiveTimeout sClient.Connect(unit.Endpoint); using (NetworkStream stream = sClient.GetStream()) { stream.Write(unit.Pakage.Data, 0, unit.Pakage.Data.Length); stream.ReadTimeout = 100 * 1000; // 100 sec _handler.ProcessRequest(stream, unit.Handler); //, unit.Handler); } } } }, ct); }
public NetListener(INetServerSettings serverSettings, INetListenerHandler listenerHandler) { this._serverSettings = serverSettings; this._listenerHandler = listenerHandler; }