public void Connect(IPAddress ip, int port) { NetLogger.LogInfo(logTag, $"Connecting to {ip}:{port}..."); socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.BeginConnect(ip, port, OnConnected, socket); }
void AcceptedClientConnection(Socket client) { clients.Add(client); IPEndPoint clientEndPoint = (IPEndPoint)client.RemoteEndPoint; NetLogger.LogInfo(logTag, $"New client connection accepted ({clientEndPoint.Address}:{clientEndPoint.Port})"); OnClientConnect?.Invoke(this, new TcpNetworkEventArgs(client)); StartReceiving(client); }
public override void Disconnect() { if (IsConnected) { NetLogger.LogInfo(logTag, "Disconnecting..."); socket.BeginDisconnect(false, OnDisconnected, socket); } else { NetLogger.LogWarning(logTag, "Already disconnected."); } }
void OnDisconnected(IAsyncResult ar) { var socket = (Socket)ar.AsyncState; socket.EndDisconnect(ar); socket.Close(); base.socket = null; NetLogger.LogInfo(logTag, "Disconnected."); TriggerOnDisconnect(); }
protected override void DisconnectedByRemote(Socket socket) { try { IPEndPoint clientEndPoint = (IPEndPoint)socket.RemoteEndPoint; NetLogger.LogInfo(logTag, $"Client disconnected ({clientEndPoint.Address}:{clientEndPoint.Port})"); } catch (Exception) { NetLogger.LogWarning(logTag, "TcpServerSocket::DisconnectedByRemote->Client disconnected."); } socket.Close(); clients.Remove(socket); OnClientDisconnect?.Invoke(this, new TcpNetworkEventArgs(socket)); }
public void Listen(int port, int backlog = 100) { socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { socket.Bind(new IPEndPoint(IPAddress.Any, port)); socket.Listen(backlog); IsConnected = true; NetLogger.LogInfo(logTag, $"Listening on port {port}..."); Accept(); } catch (Exception ex) { socket = null; NetLogger.LogError(logTag, $"Listen failed.message = {ex.Message}"); } }
public override void Disconnect() { foreach (var client in clients) { client.BeginDisconnect(false, OnClientDisconnected, client); } if (IsConnected) { NetLogger.LogInfo(logTag, "Stopped listening."); IsConnected = false; socket.Close(); TriggerOnDisconnect(); } else { NetLogger.LogWarning(logTag, "Already disconnected."); } }
void OnConnected(IAsyncResult ar) { var socket = (Socket)ar.AsyncState; try { socket.EndConnect(ar); NetLogger.LogInfo(logTag, "Connected"); OnConnect?.Invoke(this, null); StartReceiving(socket); } catch (Exception ex) { NetLogger.LogError(logTag, $"Connected failed .message = {ex.Message}"); TriggerOnDisconnect(); } }
protected void OnReceived(IAsyncResult ar) { var receiveVO = (ReceiveVO)ar.AsyncState; if (IsConnected) { var bytesReceived = receiveVO.socket.EndReceive(ar); if (bytesReceived == 0) { NetLogger.LogInfo(logTag, "the length of bytes which was received from net is zero.the net was closed by remote"); DisconnectedByRemote(receiveVO.socket); } else { NetLogger.LogInfo(logTag, $"Received {bytesReceived} bytes."); TriggerOnReceive(receiveVO, bytesReceived); Receive(receiveVO); } } }