public void Start() { IPEndPoint endpoint = new IPEndPoint(0, ListenPort); _listenSocket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _listenSocket.Bind(endpoint); _listenSocket.Listen(100); trace.Info("Listening on {0}:{1}", endpoint.Address.ToString(), ListenPort.ToString()); StartAccept(_acceptSocketAsyncEventArgs); }
public Monitor(string name) : base(HooserProtocolPort, HooserProtocolPort, name) { Debug.WriteLine( "ServiceMonitor listening on port " + ListenPort.ToString()); HoosierMessageBytes = new HoosierMessage(Name).GetBytes(); #if ENABLE_RECEIVE_HANDLER ReceiveMessage += new ReceiveMessageDelegate(ReceiveEventHandler); #endif }
protected void MonitorThreadBody() { // listen for more requests Debug.WriteLine("Hoosier.MonitorThreadBody listening on " + Address.ToString() + ":" + ListenPort.ToString()); try { Listener = new UdpClient(ListenPort); #if !MASTER_CONTROLLER Listener.EnableBroadcast = true; // listener.ExclusiveAddressUse = false; Listener.MulticastLoopback = false; #endif Debug.WriteLine("Hoosier.MonitorThreadBody sending StartupMessage"); SendStartupMessage(); while (!Done) { IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, ListenPort); Debug.WriteLine("Hoosier.MonitorThreadBody Listener.Receive..."); byte[] bytes = Listener.Receive(ref groupEP); Debug.WriteLine("Hoosier.MonitorThreadBody received " + bytes.Length.ToString() + " bytes"); if (IgnoreLoopback && Address.Equals(groupEP.Address)) { //Debug.WriteLine( "\t\tIgnoring loopback" ); continue; } if (ReceiveMessage != null) { Message msg = Message.Decode(bytes); ReceiveMessage(msg, groupEP); } } } catch (Exception e) { Debug.WriteLine("Hoosier.MonitorThreadBody Exception: " + e.Message); } Debug.WriteLine("Hoosier.MonitorThreadBody Exits "); }
public Provider(string name) : base(HooserProtocolPort, HooserProtocolPort, name) { Debug.WriteLine( "Provider " + name + " listening on port " + ListenPort.ToString()); HowdyMessageBytes = new HowdyMessage(Name).GetBytes(); GoodbyeMessageBytes = new GoodbyeMessage(Name).GetBytes(); ReceiveMessage += new ReceiveMessageDelegate(ReceiveEventHandler); }
public Socket Accept(Socket listenChan) { lock ( listenChan ) { if (listenChan != null) { Socket newChan = listenChan.Accept( ); if (Channel != null) { Log.w("ddms", "debugger already talking to " + Client.ToString( ) + " on " + ListenPort.ToString( )); newChan.Close( ); return(null); } Channel = newChan; Channel.Blocking = false; ConnectionState = ConnectionStates.AwaitShake; return(Channel); } return(null); } }
public void Stop() { _Listener.Close(1000); Clean(); _IsListening = false; _Log.Write(LogType.Warning, "=================== Server Socket Stop to Listen At " + LocalIP + ":" + ListenPort.ToString() + "===============\r\n", true); }
public bool Start() { try { _Listener.SendTimeout = _SendTimeout; _Listener.ReceiveTimeout = _ReceiveTimeout; _Listener.Listen(10); _IsListening = true; _Log.Write(LogType.Warning, "=================== Server Socket Start to Listen At " + LocalIP + ":" + ListenPort.ToString() + "===============\r\n", true); _Listener.BeginAccept(new AsyncCallback(OnClientConnect), null); return(true); } catch (Exception ex) { _IsListening = false; _Log.Write(ex); return(false); } }
public new void Load() { // Try to load, and save a new file if load failed if (!base.Load()) { base.Save(); } RMLog.Level = LogLevel; // Output the settings being used RMLog.Info("Using settings from " + base.FileName); RMLog.Info("-Listen port...." + ListenPort.ToString()); if (TargetPort > 0) { RMLog.Info("-Telnet target.." + TargetHostname + ":" + TargetPort.ToString()); } else { RMLog.Info("-Telnet target..DISABLED"); } if (RLoginPort > 0) { RMLog.Info("-RLogin target.." + TargetHostname + ":" + RLoginPort.ToString()); } else { RMLog.Info("-RLogin target..DISABLED"); } RMLog.Info("-Log level......" + LogLevel.ToString()); if (CertificateFilename != "") { // If file doesn't exist, and it's relative, convert to absolute if (!File.Exists(CertificateFilename) && !Path.IsPathRooted(CertificateFilename)) { CertificateFilename = StringUtils.PathCombine(ProcessUtils.StartupPath, CertificateFilename); } if (File.Exists(CertificateFilename)) { RMLog.Info("-Cert file......" + CertificateFilename); if (CertificatePassword == "") { RMLog.Info("-Cert password..none"); } else { RMLog.Info("-Cert password..yes (hidden)"); } } else { RMLog.Error("-Cert file not found: '" + CertificateFilename + "'"); CertificateFilename = ""; } } if (RelayFilename != "") { // If file doesn't exist, and it's relative, convert to absolute if (!File.Exists(RelayFilename) && !Path.IsPathRooted(RelayFilename)) { RelayFilename = StringUtils.PathCombine(ProcessUtils.StartupPath, RelayFilename); } if (File.Exists(RelayFilename)) { RMLog.Info("-Relay file....." + RelayFilename); } else { RMLog.Error("-Relay file not found: '" + RelayFilename + "'"); RelayFilename = ""; } } }
/// <summary> /// Method run as a thread to receive Client messages. /// </summary> public void ServerHandler() { // Initialize variables string msg = string.Empty; string messageToSend = string.Empty; string msgFiltered = string.Empty; byte[] buffer = new byte[2048]; Socket serverSocket = null; Stopwatch swHeartBeat = new Stopwatch(); Connected = false; OnServerConnected(Connected); ASCIIEncoding asen = new ASCIIEncoding(); // Initializes the Listener TcpListener listener = new TcpListener(IPAddress.Any, Convert.ToInt32(ListenPort)); this.Running = true; string sendString = string.Empty; while (!this.ServerStopped) { try { // Start listening for incomming messages. listener.Start(); string str = Convert.ToString(ClientIPaddress) + ":" + ListenPort; OnServerStatusMessageUpdate(this.Name + ": Server waiting for connection from: " + str); Connected = false; OnServerConnected(Connected); // Wait for connection while (!listener.Pending() && !ServerStopped) { Thread.Sleep(10); } if (ServerStopped) { continue; } serverSocket = listener.AcceptSocket(); // Debug code block to catch possible conflict IPEndPoint ep = (IPEndPoint)serverSocket.LocalEndPoint; if (ep.Port != this.ListenPort) { OnServerTCP_MessageUpdate("Local End Point:" + ep.Port.ToString() + " Listen Port:" + ListenPort.ToString()); } OnServerStatusMessageUpdate(this.Name + ": Server connected"); Connected = true; OnServerConnected(Connected); swHeartBeat.Start(); while (serverSocket.Connected && !ServerStopped) { // Init buffer count (number of tokens) int bufferCount = 0; // Poll the socket to check for client message serverSocket.Poll(10000, SelectMode.SelectRead); if (serverSocket.Available > 0) { // Read the TCP/IP line bufferCount = serverSocket.Receive(buffer); for (int i = 0; i < bufferCount; i++) { if (buffer[i] != 10) { sendString = sendString + (char)buffer[i]; } else { // Filter out the non readable characters. msgFiltered = MessageFilter(sendString); OnServerStatusMessageUpdate("<" + this.Name + ": Server recieved:" + msgFiltered); // Fire event and send the message to the subscriber. It is expected for the // subscriber to update the Server.Response property. OnServerTCP_MessageUpdate(sendString); sendString = string.Empty; } } } else { // Process messages in the queue if (serverQ.Count > 0) { // Send message to Client messageToSend = serverQ.Dequeue(); serverSocket.Send(asen.GetBytes(messageToSend)); msgFiltered = MessageFilter(messageToSend); OnServerStatusMessageUpdate(">" + this.Name + ": Server sent: " + msgFiltered); swHeartBeat.Reset(); swHeartBeat.Start(); } if (this.SendHeartbeat) { if (swHeartBeat.ElapsedMilliseconds > this.HeartbeatFrequency * 1000) { messageToSend = "Heartbeat" + this.Terminator; serverSocket.Send(asen.GetBytes(messageToSend)); //OnServerStatusMessageUpdate(">" + this.Name + ": Server sent: " + messageToSend); swHeartBeat.Reset(); swHeartBeat.Start(); } } } if (ServerStopped) { continue; } } } catch (Exception ex) { OnServerStatusMessageUpdate(this.Name + ": Server Exception>" + ex.Message); Thread.Sleep(500); } finally { /* clean up */ if (serverSocket != null) { if (!serverSocket.Connected) { Connected = false; OnServerConnected(Connected); OnServerStatusMessageUpdate(this.Name + ": Server not connected"); } } } } // Clean up when server exits OnServerStatusMessageUpdate(this.Name + ": Server stopped"); Connected = false; OnServerConnected(Connected); this.Running = false; listener.Stop(); if (serverSocket != null) { serverSocket.Shutdown(SocketShutdown.Both); serverSocket.Close(); } }
public new void Load() { // Try to load, and save a new file if load failed if (!base.Load()) { base.Save(); } RMLog.Level = LogLevel; // Output the settings being used RMLog.Info("Using settings from " + base.FileName); RMLog.Info("-Listen port: " + ListenPort.ToString()); if (TargetPort > 0) { RMLog.Info("-Telnet target: " + TargetHostname + ":" + TargetPort.ToString()); } else { RMLog.Info("-Telnet target: DISABLED"); } if (RLoginPort > 0) { RMLog.Info("-RLogin target: " + TargetHostname + ":" + RLoginPort.ToString()); } else { RMLog.Info("-RLogin target: DISABLED"); } RMLog.Info("-Log level: " + LogLevel.ToString()); if (!string.IsNullOrWhiteSpace(CertificateFilename)) { // If file doesn't exist, and it's relative, convert to absolute if (!File.Exists(CertificateFilename) && !Path.IsPathRooted(CertificateFilename)) { CertificateFilename = StringUtils.PathCombine(ProcessUtils.StartupPath, CertificateFilename); } if (File.Exists(CertificateFilename)) { RMLog.Info("-Cert file: " + CertificateFilename); if (string.IsNullOrWhiteSpace(CertificatePassword)) { RMLog.Info("-Cert password: none"); } else { RMLog.Info("-Cert password: yes (hidden)"); } } else { RMLog.Error("-Cert file not found: '" + CertificateFilename + "'"); CertificateFilename = ""; } } if (!string.IsNullOrWhiteSpace(User) && OSUtils.IsUnix) { RMLog.Info($"-Run as user: '******'"); } if (!string.IsNullOrWhiteSpace(RelayFilename)) { // If file doesn't exist, and it's relative, convert to absolute if (!File.Exists(RelayFilename) && !Path.IsPathRooted(RelayFilename)) { RelayFilename = StringUtils.PathCombine(ProcessUtils.StartupPath, RelayFilename); } if (File.Exists(RelayFilename)) { RMLog.Info("-Relay file: " + RelayFilename); } else { RMLog.Error("-Relay file not found: '" + RelayFilename + "'"); RelayFilename = ""; } } if (!string.IsNullOrWhiteSpace(RelayDeniedFilename)) { // If file doesn't exist, and it's relative, convert to absolute if (!File.Exists(RelayDeniedFilename) && !Path.IsPathRooted(RelayDeniedFilename)) { RelayDeniedFilename = StringUtils.PathCombine(ProcessUtils.StartupPath, RelayDeniedFilename); } if (File.Exists(RelayDeniedFilename)) { RMLog.Info("-Relay denied file: " + RelayDeniedFilename); } else { RMLog.Error("-Relay denied file not found: '" + RelayDeniedFilename + "'"); RelayDeniedFilename = ""; } } if (MaxIdleTimeInMinutes > 0) { RMLog.Info($"-Max idle time before disconnecting: {MaxIdleTimeInMinutes} minutes"); } else { RMLog.Info("-Max idle time before disconnecting: DISABLED"); } if (MaxSessionLengthInHours > 0) { RMLog.Info($"-Max session length before disconnecting: {MaxSessionLengthInHours} hours"); } else { RMLog.Info("-Max session length before disconnecting: DISABLED"); } }