private void SendCallback(IAsyncResult ar) { ViewerClient client = (ViewerClient)ar.AsyncState; try { client.sock.EndSend(ar); } catch (Exception) { client.disconnected = true; } }
public void Update() { // Update for (int i = 0; i < _clients.Count; i++) { ViewerClient client = _clients[i]; if (client.disconnected || client.sock.Connected == false) { OnClientDisconnected(client); _clients.RemoveAt(i); if (_clients.Count == 0) { break; } i--; } } }
private void AcceptCallback(IAsyncResult ar) { // Get the socket that handles the client request. Socket listener = (Socket)ar.AsyncState; try { ViewerClient client = new ViewerClient(); client.sock = listener.EndAccept(ar); client.disconnected = false; _clients.Add(client); OnClientConnected(client); // Accept next. _listener.BeginAccept(new AsyncCallback(AcceptCallback), _listener); } catch (Exception ex) { Log.Out("Unable to accept new client: {0}", ex.Message); } }
private void Send(ViewerClient client, byte[] data, int length) { var sock = client.sock; sock.BeginSend(data, 0, length, 0, new AsyncCallback(SendCallback), client); }
private void OnClientDisconnected(ViewerClient cl) { Log.Out("[DebugServer] Client disconnected {0}", cl.sock.RemoteEndPoint); }