/// <summary> /// Handles socket status changes for the secure server. /// </summary> /// <param name="server">The server that had a socket change event.</param> /// <param name="clientIndex">The index of the client who's socket connection changed.</param> /// <param name="serverSocketStatus">The new socket status.</param> private void SecureSocketStatusChange(SecureTCPServer server, uint clientIndex, SocketStatus serverSocketStatus) { if (serverSocketStatus != SocketStatus.SOCKET_STATUS_CONNECTED) { connectedSocketIndexes.Remove(clientIndex); } if (serverSocketStatus == SocketStatus.SOCKET_STATUS_BROKEN_LOCALLY || serverSocketStatus == SocketStatus.SOCKET_STATUS_BROKEN_REMOTELY) { if (startRequested) { server.WaitForConnectionsAlways(SecureClientConnectionCallback); } } }
/// <summary> /// Starts the secure server. /// </summary> /// <param name="port">The port the server should be started on.</param> private void StartSecureServer(int port) { if (secureTcpServer != null) { secureTcpServer.SocketStatusChange -= SecureSocketStatusChange; secureTcpServer.DisconnectAll(); connectedSocketIndexes.Clear(); secureTcpServer = null; } CrestronConsole.PrintLine("Starting secure server."); secureTcpServer = new SecureTCPServer(IPAddress.Any.ToString(), port, 1024, EthernetAdapterType.EthernetUnknownAdapter, 10); secureTcpServer.SocketStatusChange += SecureSocketStatusChange; secureTcpServer.WaitForConnectionsAlways(SecureClientConnectionCallback); }