Exemple #1
0
        public void Listen(int u)
        {
            try
            {
                tcpListener = new TcpListenerEx(IPAddress.Parse(IP), Port);
                tcpListener.Start();
                Debug.WriteLine("Сервер запущен.");

                while (true)
                {
                    TcpClient tcpClient = tcpListener.AcceptTcpClient();

                    ClientObject clientObject = new ClientObject(tcpClient, this);
                    //clientObject.setReceiveOut(receiveOut);
                    //clientObject.setId(clientObject.GetMessage());
                    Thread clientThread = new Thread(new ThreadStart(clientObject.Process));
                    clientThread.Start();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                Disconnect();
            }
        }
        private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            IPEndPoint    ep       = e.Argument as IPEndPoint;
            TcpListenerEx listener = new TcpListenerEx(ep);

            if (!listener.Active)
            {
                listener.Start();
            }
            while (true)
            {
                try
                {
                    const int byteSize = 1024 * 1024;
                    byte[]    message  = new byte[byteSize];
                    using (var s = listener.AcceptTcpClient())
                    {
                        s.GetStream().Read(message, 0, byteSize);    //obtaining network stream and receiving data through .Read()
                        message = cleanMessage(message);
                        string g = System.Text.Encoding.UTF8.GetString(message);
                        backgroundWorker1.ReportProgress(0, g);
                    }
                }
                catch
                {
                }
                finally
                {
                    listener.Stop();
                }
            }
        }
Exemple #3
0
        public void Listen()
        {
            try
            {
                tcpListener = new TcpListenerEx(IPAddress.Parse(IP), Port);
                tcpListener.Start();
                Debug.WriteLine("Сервер запущен.");

                while (true)
                {
                    TcpClient tcpClient = tcpListener.AcceptTcpClient();

                    ClientObject clientObject = new ClientObject(tcpClient, this);
                    AddConnection(clientObject);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                Disconnect();
            }
        }
Exemple #4
0
        private void StartListening()
        {
            try
            {
                listener = new TcpListenerEx(localEndPoint);
                listener.Start();
                Runner.Primary(() => OnStartListening.Invoke());

                // An incoming connection needs to be processed.
                client = listener.AcceptTcpClient();
                client.ReceiveBufferSize = Int32.MaxValue;
                networkStream            = client.GetStream();

                AcceptConnection();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString() + "Line 79");
            }


            Console.WriteLine("\nPress ENTER to continue...");
            //Console.Read();
        }
Exemple #5
0
        private void HandleClient(Object state)
        {
            using (var client = _listener.AcceptTcpClient())
                using (var ns = client.GetStream()) {
                    if (ns.CanTimeout)
                    {
                        ns.ReadTimeout  = Timeout * 1000;
                        ns.WriteTimeout = Timeout * 1000;
                    }
                    var endPoint      = client.Client.RemoteEndPoint as IPEndPoint;
                    var clientAddress = endPoint != null?
                                        endPoint.Address.ToString() + ":" + endPoint.Port.ToString() :
                                            null;

                    Message = "Connected: " + clientAddress;
                    try {
                        var isDisconnected = false;
                        while (!isDisconnected &&
                               client.GetState() == TcpState.Established &&
                               _listener.Active)
                        {
                            Thread.Sleep(100);
                            if (!ns.DataAvailable)
                            {
                                continue;
                            }
                            ChatMessage message = new ChatMessage();
                            using (var ms = new MemoryStream()) {
                                var receiveBuffer = new byte[BufferSize];
                                do
                                {
                                    var receiveSize = ns.Read(receiveBuffer, 0, receiveBuffer.Length);
                                    if (receiveSize == 0)
                                    {
                                        isDisconnected = true;
                                        break;
                                    }
                                    ms.Write(receiveBuffer, 0, receiveSize);
                                } while (ns.DataAvailable);
                                if (!isDisconnected)
                                {
                                    message = ChatMessage.FromBytes(ms.GetBuffer());
                                }
                            }
                            var response = this.NotifyMessageReceived(message);
                            if (!isDisconnected)
                            {
                                var bytes = response.ToBytes();
                                ns.Write(bytes, 0, bytes.Length);
                            }
                        }
                    }
                    catch (Exception ex) {
                        var socketException = ex.InnerException as SocketException;
                        var message         = socketException == null?
                                              ex.GetAllMessages() :
                                                  ((SocketError)socketException.ErrorCode).ToString() + ": " + clientAddress;

                        Message = message;
                    }
                    Message = "Disconnected: " + clientAddress;
                }
        }