示例#1
0
        private void Slaving()
        {
            TcpServerSocket ClientServiceSocket = null;

            try
            {
                ClientServiceSocket = new TcpServerSocket(this.EnvHostBase.LocalIpAddress, this._listenSlavePort);

                do
                {
                    //    ClientServiceSocket.AcceptListen();
                    //if (ClientServiceSocket.Pending())
                    //{

                    //}
                    Thread.Sleep(200);
                } while (!requestStop);
            }
            catch (Exception ex)
            {
                string ExceptionMsg = ex.Message + ex.StackTrace;

                // write to log file ..
                EnvLog.Writer(AssemblyInfoClass.ProductInfo, Log.Level.Error, ExceptionMsg, true);
            }
            finally
            {
                if (ClientServiceSocket != null)
                {
                    // clean server socket resource ..
                    ClientServiceSocket.Close();
                }
            }
        }
示例#2
0
 public EchoServer(TcpServerSocket socket)
     : base(socket)
 {
     ClientDataReceived += (socket1, data) =>
     {
         socket1.Send(new TestMessage("TestMessage"));
     };
 }
        public void Listen(int port)
        {
            TcpServerSocket tcpServerSocket = new TcpServerSocket();

            this.socket = tcpServerSocket;
            tcpServerSocket.OnClientConnected += delegate(TcpServerSocket sender, Socket client)
            {
                this.onConnected();
            };
            tcpServerSocket.Listen(port);
        }
示例#4
0
        // 開始処理
        private void Form_Load(object sender, EventArgs e)
        {
            // フォームのLoadイベントで開始処理を呼ぶ
            tcpServerToolStrip.Begin(@"SETTING.INI", this.Text);

            // ソケット
            socket = tcpServerToolStrip.Socket;

            // パケット数カウンタ表示
            updateCounter();
        }
示例#5
0
        /// <summary>
        /// Starts listening for new connections.
        /// </summary>
        void StartServer(IPEndPoint _ipEndpoint)
        {
            // Starts listening if the server isn't already listening.
            if (this.serverSocket == null || !this.serverSocket.Running)
            {
                this.serverSocket = new TcpServerSocket(_ipEndpoint)
                {
                    ConnectedClients = new List <TcpClientSocket>()
                };

                // Subscribe to find when new clients are connected.
                // <param="s"> The instance of the class that invoded the event. <param>
                // <param="e"> AcceptedTcpSocketEventArgs (which contains the accepted socket, the remote endpoint, the tcpsocket connection state (e.g. an exception that has occured or if the socket is connected, if a data has been received and a reference to the socket in the socket object which can be used for extra purposes.))<param>
                this.serverSocket.Accepted += (s, e) =>
                {
                    this.serverSocket.ConnectedClients.Add(e.AcceptedSocket);
                    beginReceiving(this.serverSocket.ConnectedClients[this.serverSocket.ConnectedClients.IndexOf(e.AcceptedSocket)]);
                    TsslConnectedClients.Text = $"Connected Clients: {this.serverSocket.ConnectedClients.Count}";
                };

                this.serverSocket.ConnectedClients.Clear();

                for (int i = 0; i < this.serverSocket.ConnectedClients.Count; i++)
                {
                    this.serverSocket.ConnectedClients[i] = null;
                }

                try
                {
                    this.serverSocket.Start();

                    if (rtbServerMessages.TextLength <= 0)
                    {
                        AppendText("Server started.", true);
                    }
                    else
                    {
                        AppendText("Server started.");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Unable to start the server.");
                }

                btnSend.Enabled       = true;
                tsslServerStatus.Text = "State: Running";
            }
            else
            {
                MessageBox.Show("The server is already started.", "Cannot Start Server");
            }
        }
示例#6
0
文件: Program.cs 项目: qipa/NLog-1
        static void initServer(string[] args)
        {
            int port = 0;

            try {
                port = int.Parse(args[1]);
                var server = new TcpServerSocket();
                server.OnDisconnect += onDisconnect;
                server.Listen(port);
                _socket = server;
                start();
            } catch (Exception) {
                Console.WriteLine("Invalid port");
            }
        }
 bool isSocketReady()
 {
     if (this.socket != null)
     {
         TcpServerSocket tcpServerSocket = this.socket as TcpServerSocket;
         if (tcpServerSocket != null)
         {
             return(tcpServerSocket.count > 0);
         }
         TcpClientSocket tcpClientSocket = this.socket as TcpClientSocket;
         if (tcpClientSocket != null)
         {
             return(tcpClientSocket.isConnected);
         }
     }
     return(false);
 }
        public void Disconnect()
        {
            if (m_serverSocket != null)
            {
                UpdateBehaviour.RemoveUpdate(this);

                m_serverSocket.OnClientConnect    -= OnClientConnected;
                m_serverSocket.OnClientDisconnect -= OnClientDisconnected;

                m_serverSocket.OnReceive    -= OnReceived;
                m_serverSocket.OnDisconnect -= OnDisconnected;

                if (m_serverSocket.IsConnected)
                {
                    m_serverSocket.Disconnect();
                }

                m_serverSocket = null;
            }
        }
示例#9
0
        public override void Run(string[] args)
        {
            var port = 0;

            try {
                port = int.Parse(args[1]);
            } catch (Exception) {
                port = 3333;
            }

            var server = new TcpServerSocket();

            _socket              = server;
            server.OnDisconnect += onDisconnect;
            server.Listen(port);
            server.OnReceive       += onReceive;
            Console.CancelKeyPress += onCancel;
            while (true)
            {
                server.Send(Encoding.UTF8.GetBytes(Console.ReadLine()));
            }
        }
        public void Listen(int port)
        {
            if (m_Port != port && m_serverSocket != null)
            {
                DebugLog.Warning("");
                Disconnect();
            }

            m_Port = port;

            m_serverSocket = new TcpServerSocket();

            m_serverSocket.OnClientConnect    += OnClientConnected;
            m_serverSocket.OnClientDisconnect += OnClientDisconnected;

            m_serverSocket.OnReceive    += OnReceived;
            m_serverSocket.OnDisconnect += OnDisconnected;

            m_serverSocket.Listen(m_Port);

            UpdateBehaviour.AddUpdate(this);
        }
示例#11
0
 static void Server_HandleMessage(TcpServerSocket sender, string repoint, Message msg)
 {
     // if (rp == null)
     rp = repoint;
     lock (lck)
         recCount++;
     // Thread.Sleep(1);
     //return;
     //Console.WriteLine($"收到的信息为:{msg.Value}");
     //	if (reCount % 2 == 0)
     {
         //msg.Value = $"{reCount}Server:SendMessageAsync:{DateTime.Now}";
         if (sender.SendMessageAsync(repoint, msg))
         {
             lock (lck2)
                 sendCount++;
         }
     }
     //		else
     {
         //	msg.Value = $"{reCount}Server:SendMessage:{DateTime.Now}";
         //sender.SendMessage(repoint, msg, 100000);
     }
 }
 private void OnDisconnected(object sender, EventArgs e)
 {
     m_serverSocket = null;
 }
示例#13
0
    void when_created()
    {
        TcpServerSocket server = null;

        before = () => {
            server = new TcpServerSocket();
        };

        it["has no connected clients"] = () => server.connectedClients.should_be(0);
        it["is not listening"]         = () => server.isConnected.should_be_false();

        it["can disconnect without triggering event"] = () => {
            server.OnDisconnect += (sender, e) => fail();
            server.Disconnect();
        };

        it["can listen"] = () => {
            server.Listen(Port);
            server.isConnected.should_be_true();
            // Cleanup
            server.Disconnect();
        };

        it["can not listen when address is used"] = () => {
            var blockingServer = new TcpServerSocket();
            blockingServer.Listen(Port);

            server.Listen(Port);
            server.isConnected.should_be_false();

            // Cleanup
            blockingServer.Disconnect();
        };

        it["can not send"] = () => server.Send(new byte[] { 1, 2 });

        context["when listening"] = () => {
            before = () => {
                server.Listen(Port);
            };

            after = () => {
                try {
                    server.Disconnect();
                } catch (Exception) {
                }
            };

            it["can disconnect"] = () => {
                var didDisconnect = false;
                server.OnDisconnect += (sender, e) => didDisconnect = true;
                server.Disconnect();
                didDisconnect.should_be_true();
                server.isConnected.should_be_false();
            };

            it["accepts connections"] = () => {
                var clientConnected = false;
                server.OnClientConnect += (sender, e) => clientConnected = true;
                createAndConnectClient(Port);
                server.connectedClients.should_be(1);
                clientConnected.should_be_true();
            };

            it["accepts multiple connections"] = () => {
                createAndConnectClient(Port);
                createAndConnectClient(Port);
                createAndConnectClient(Port);
                server.connectedClients.should_be(3);
            };

            context["when connection accepted"] = () => {
                Socket client1 = null;
                Socket client2 = null;
                before = () => {
                    client1 = createAndConnectClient(Port);
                    client2 = createAndConnectClient(Port);
                };

                it["can disconnect"] = () => {
                    server.Disconnect();
                    wait();
                    server.connectedClients.should_be(0);
                };

                it["receives client disconnect"] = () => {
                    var clientDidDisconntect = false;
                    server.OnReceive          += (sender, e) => fail();
                    server.OnClientDisconnect += (sender, e) => clientDidDisconntect = true;
                    client1.Disconnect(false);
                    client1.Close();
                    wait();
                    server.connectedClients.should_be(1);
                    clientDidDisconntect.should_be_true();
                };

                it["receives message"] = () => {
                    var message = "Hello";
                    ReceiveEventArgs receiveEventArgs = null;
                    server.OnReceive += (sender, e) => receiveEventArgs = e;
                    client1.Send(Encoding.UTF8.GetBytes(message));
                    wait();
                    message.should_be(Encoding.UTF8.GetString(receiveEventArgs.bytes));
                    receiveEventArgs.client.should_not_be_null();
                };

                it["receives multiple messages"] = () => {
                    var message1 = "Hello1";
                    var message2 = "Hello2";
                    ReceiveEventArgs receiveEventArgs = null;
                    server.OnReceive += (sender, e) => receiveEventArgs = e;

                    client1.Send(Encoding.UTF8.GetBytes(message1));
                    wait();
                    message1.should_be(Encoding.UTF8.GetString(receiveEventArgs.bytes));

                    client1.Send(Encoding.UTF8.GetBytes(message2));
                    wait();
                    message2.should_be(Encoding.UTF8.GetString(receiveEventArgs.bytes));
                };

                it["can respond to client"] = () => {
                    var clientMessage   = "Hello";
                    var serverMessage   = "Hi";
                    var receivedMessage = string.Empty;
                    ReceiveEventArgs receiveEventArgs = null;
                    server.OnReceive += (sender, e) => receiveEventArgs = e;
                    client1.Send(Encoding.UTF8.GetBytes(clientMessage));
                    wait();

                    prepareForReceive(client1, msg => receivedMessage = msg);

                    server.SendWith(receiveEventArgs.client, Encoding.UTF8.GetBytes(serverMessage));
                    wait();

                    receivedMessage.should_be(serverMessage);
                };

                it["can send to all connected clients"] = () => {
                    var message = "Hello";
                    var client1ReceivedMessage = string.Empty;
                    var client2ReceivedMessage = string.Empty;
                    prepareForReceive(client1, msg => client1ReceivedMessage = msg);
                    prepareForReceive(client2, msg => client2ReceivedMessage = msg);

                    server.Send(Encoding.UTF8.GetBytes(message));
                    wait();

                    client1ReceivedMessage.should_be(message);
                    client2ReceivedMessage.should_be(message);
                };
            };
        };
    }
示例#14
0
        public static void Main(string[] args)
        {
            DataTable dt   = new DataTable();
            var       dddd = dt.SerializeToByte();
            int       len  = 1234445566;

            byte[] d = new byte[4];
            d[0] = (Byte)((len & 0x7f000000) >> 24);
            d[1] = (Byte)((len & 0xff0000) >> 16);
            d[2] = (Byte)((len & 0xff00) >> 8);
            d[3] = (Byte)(len & 0xff);

            int reciveObjLength = d[3];

            reciveObjLength += (d[2] << 8);
            reciveObjLength += d[1] << 16;
            reciveObjLength += (d[0] & 0x7f) << 24;



            Message msg = new Message();

            var server = new TcpServerSocket();

            //server.eShowMsg += Server_eShowMsg;
            //server.HandleMessage += Server_HandleMessage;
            server.OnError += Server_OnError;
            if (server.Bind(23456))
            {
                server.Listen();
            }
            int lastSended = 0, lastRec = 0;

            new Action <TcpServerSocket>((s) => {
                while (true)
                {
                    //  while (sendCount < recCount)
                    {
                        //lock (lck2)
                        //sendCount += s.SendMessageAsync(msg);
                        //   Thread.Sleep(1);
                    }
                    Thread.Sleep(10);
                }
            }).BeginInvoke(server, null, null);
            while (true)
            {
                //   if (rp != null)
                {
                    //        server.SendMessageAsync(msg);
                    //         Thread.Sleep(1);
                }
                //      else
                {
                    Thread.Sleep(1000);
                    Console.WriteLine($"收到:{recCount}  发出:{sendCount}  客户端:{server.ClientCount}");
                    Console.Title = $"接收:{recCount - lastRec}  发出:{sendCount - lastSended}  客户端:{server.ClientCount}";
                    lastRec       = recCount;
                    lastSended    = sendCount;
                }
                //reCount = 0;
            }
        }
示例#15
0
        public void TcpTest()
        {
            object monitor = new object();

            lock (monitor) {
                bool clientMaySend  = false;
                int  payloadCounter = 0;

                Console.WriteLine("Starting server");
                HashSet <Socket> connectedSockets = new HashSet <Socket>();
                TcpServerSocket  server           = null;
                server = new TcpServerSocket(socket => {
                    lock (monitor) {
                        lock (connectedSockets) {
                            Console.WriteLine("Server received client's connection");
                            connectedSockets.Add(socket);
                        }
                    }
                }, (sender, buffer, size) => {
                    lock (monitor) {
                        Console.WriteLine("SRec " + size);
                        server.Send(sender, buffer, 0, size);
                    }
                }, socket => {
                    lock (connectedSockets) {
                        Console.WriteLine("Server lost connection to client");
                        connectedSockets.Remove(socket);
                    }
                }, connectedSockets, 1, Port);

                byte[] sendBuffer = new byte[DataSize];
                _random.NextBytes(sendBuffer);

                Console.WriteLine("Starting client");
                TcpClientSocket client = null;
                client = new TcpClientSocket(() => {
                    lock (monitor) {
                        Console.WriteLine("Client connected to server");
                        if (clientMaySend)
                        {
                            Console.WriteLine("Client not waiting for main thread");
                        }
                        else
                        {
                            Console.WriteLine("Client waiting for main thread");
                            Monitor.Wait(monitor);
                        }
                        Console.WriteLine("Client sending first data");
                        client.Send(sendBuffer, 0, sendBuffer.Length);
                    }
                }, error => {
                    lock (monitor) {
                        Console.WriteLine("Client failed to connect to server: " + error);
                    }
                }, (buffer, size) => {
                    lock (monitor) {
                        Console.WriteLine("CRec " + size);
                        AssertArrayContentsEqualInFirstArrayLengthRange(sendBuffer, buffer);
                        if (++payloadCounter == PayloadCount)
                        {
                            Monitor.Pulse(monitor);
                        }
                        else
                        {
                            _random.NextBytes(sendBuffer);
                            client.Send(sendBuffer, 0, sendBuffer.Length);
                        }
                    }
                }, () => Console.WriteLine("Client lost connection to server"));
                client.Start(Ip, Port);

                clientMaySend = true;
                Monitor.Pulse(monitor);
                Console.WriteLine("Main thread waiting");
                Monitor.Wait(monitor);

                Console.WriteLine("Closing client");
                client.Close();
                Console.WriteLine("Closing server");
                server.Close();
            }
        }