private async Task Run() { ValidateProperties(); var listener = new TcpListener(IPAddress.Any, port); listener.Start(); while (run) { if (listener.Pending()) { GetSocket getSocket = () => listener.AcceptSocket(); var secureConnection = new SecureServerConnection(new TcpConnection(getSocket), DataFormatters.AsymmetricCipher, DataFormatters.SymmetricCipher); var objectConnection = new DefaultObjectConnection(secureConnection) { Serializer = DataFormatters.Serializer }; OnInboundConnection?.Invoke(objectConnection); await objectConnection.Start(); } } }
public IObjectConnection Create(string ip, int port) { ValidateProperties(); GetSocket getSocket = () => { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.ReceiveBufferSize = 2048; socket.SendBufferSize = 2048; socket.NoDelay = true; socket.Connect(new IPEndPoint(IPAddress.Parse(ip), port)); return(socket); }; var secureConnection = new SecureClientConnection(new TcpConnection(getSocket), DataFormatters.AsymmetricCipher, DataFormatters.SymmetricCipher); var objectConnection = new DefaultObjectConnection(secureConnection) { Serializer = DataFormatters.Serializer }; return(objectConnection); }