コード例 #1
0
ファイル: TcpListener.cs プロジェクト: jdaigle/LightRail
        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);
        }
コード例 #2
0
ファイル: Monitor.cs プロジェクト: jbesemer/Hoosier
        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
        }
コード例 #3
0
ファイル: Common.cs プロジェクト: jbesemer/Hoosier
        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 ");
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: Debugger.cs プロジェクト: NateShoffner/madb
        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);
            }
        }
コード例 #6
0
 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);
 }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
        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 = "";
                }
            }
        }
コード例 #9
0
        /// <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();
            }
        }
コード例 #10
0
ファイル: Config.cs プロジェクト: rickparrish/fTelnetProxy
        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");
            }
        }