private Socket NewSocket() { _connection?.Disconnect(null); _connection = null; return(Protocol == TransportProtocol.IPv6 ? new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp) : new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)); }
private void SetupConnection(Socket s) { SetTcpKeepAlive(s); EndPoint = (IPEndPoint)s.RemoteEndPoint; _connection = new InternalSecureSocketConnectedClient(s, _packager); _connection.BeginReceive(ReceiveHandler); _connection.OnDisconnect += Connection_OnDisconnect; }
public bool Connect(string host, int port) { Socket sock = NewSocket(); try { sock.Connect(host, port); SetupConnection(sock); return(true); } catch { _connection = null; return(false); } }
private void TcpSock_OnClientConnect(BaseServerSocket sender, Socket s) { InternalSecureSocketConnectedClient client = new InternalSecureSocketConnectedClient(s, _packager); client.SetId(_guidGenerator()); client.BeginReceive(ReceiveHandler); client.Send(cl => { Clients.Add(cl); client.OnDisconnect += (c, err) => { Clients.Remove(c); }; OnClientConnect?.Invoke(this, cl); }, new HandshakePacket(true, client.Id)); }
private void ReceiveHandler(InternalSecureSocketConnectedClient client, IPacket data) { _callbacks.Handle(this, data); }