Example #1
0
        /// <summary>
        /// 接收消息
        /// </summary>
        /// <param name="clientSocket"></param>
        private void ReceiveMessage(object clientSocket)
        {
            Socket myClientSocket = (Socket)clientSocket;

            while (true)
            {
                try
                {
                    byte[] result = new byte[1024 * 1024 * 10];
                    //通过clientSocket接收数据
                    int receiveNumber = myClientSocket.Receive(result);
                    if (receiveNumber > 0)
                    {
                        var content = Configs.Encoding.GetString(result);
                        MessageReceiveEvent?.Invoke(content);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    myClientSocket.Close();
                    break;
                }
            }
        }
        public void SendBinaryMessageTest()
        {
            try
            {
                WebSocketServer.NewDataReceived -= new SessionHandler <WebSocketSession, byte[]>(WebSocketServer_NewDataReceived);

                var webSocketClient = CreateClient(Version);

                StringBuilder sb = new StringBuilder();

                for (int i = 0; i < 10; i++)
                {
                    sb.Append(Guid.NewGuid().ToString());
                }

                string messageSource = sb.ToString();

                Random rd = new Random();

                for (int i = 0; i < 100; i++)
                {
                    int startPos = rd.Next(0, messageSource.Length - 2);
                    int endPos   = rd.Next(startPos + 1, messageSource.Length - 1);

                    string message = messageSource.Substring(startPos, endPos - startPos);
                    var    data    = Encoding.UTF8.GetBytes("ECHO " + message);

                    webSocketClient.Send(data, 0, data.Length);

                    Console.WriteLine("Client:" + message);

                    if (!MessageReceiveEvent.WaitOne(1000))
                    {
                        Assert.Fail("Cannot get response in time!");
                    }

                    Assert.AreEqual(message, CurrentMessage);
                }

                webSocketClient.Close();

                if (!CloseEvent.WaitOne(1000))
                {
                    Assert.Fail("Failed to close session ontime");
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                WebSocketServer.NewDataReceived += new SessionHandler <WebSocketSession, byte[]>(WebSocketServer_NewDataReceived);
            }
        }
        public SClient( )
        {
            IPAddress ip = IPAddress.Parse(Configs.IP);

            serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            serverSocket.Connect(new IPEndPoint(ip, Configs.Port));
            MessageReceiveEvent?.Invoke($"连接{serverSocket.LocalEndPoint.ToString()}成功");

            receiveThread = new Thread(ReceiveMessage);
            receiveThread.IsBackground = true;
            receiveThread.Start();
        }
Example #4
0
        public SServer()
        {
            IPAddress ip = IPAddress.Parse(Configs.IP);

            serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            serverSocket.Bind(new IPEndPoint(ip, Configs.Port)); //绑定IP地址:端口
            serverSocket.Listen(10);                             //设定最多10个排队连接请求
            MessageReceiveEvent?.Invoke($"启动监听{serverSocket.LocalEndPoint.ToString()}成功");
            //通过Clientsoket发送数据
            myThread = new Thread(ListenClientConnect);
            myThread.IsBackground = true;
            myThread.Start();
        }
Example #5
0
        private void VerifySendMessage(string message)
        {
            var websocket = CreateClient();

            websocket.Send(message);

            if (!MessageReceiveEvent.WaitOne())
            {
                Assert.Fail("Failed to receive message one time");
            }

            Assert.AreEqual(message, CurrentMessage);

            websocket.Close();
        }
        public void SendMessageTest()
        {
            var webSocketClient = CreateClient(m_Version);

            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < 10; i++)
            {
                sb.Append(Guid.NewGuid().ToString());
            }

            string messageSource = sb.ToString();

            Random rd = new Random();

            for (int i = 0; i < 100; i++)
            {
                int startPos = rd.Next(0, messageSource.Length - 2);
                int endPos   = rd.Next(startPos + 1, messageSource.Length - 1);

                string message = messageSource.Substring(startPos, endPos - startPos);

                webSocketClient.Send("ECHO " + message);

                Console.WriteLine("Client:" + message);

                if (!MessageReceiveEvent.WaitOne(1000))
                {
                    Assert.Fail("Cannot get response in time!");
                }

                Assert.AreEqual(message, CurrentMessage);
            }

            webSocketClient.Close();

            if (!CloseEvent.WaitOne(1000))
            {
                Assert.Fail("Failed to close session ontime");
            }
        }
Example #7
0
        public void SendMessage(string cmd)
        {
            var enableClient = Clients.Where(x => x.Connected).ToList();

            if (enableClient.Count() == 0)
            {
                MessageReceiveEvent?.Invoke("没有可用的客户端");
                return;
            }
            for (int i = 0; i < enableClient.Count; i++)
            {
                try
                {
                    if (enableClient[i].Connected)
                    {
                        enableClient[i].Send(Configs.Encoding.GetBytes(cmd));
                    }
                }
                catch (Exception) { }
            }
        }
Example #8
0
 /// <summary>
 /// 监听客户端连接
 /// </summary>
 private void ListenClientConnect()
 {
     while (true)
     {
         try
         {
             Socket clientSocket = serverSocket.Accept();
             if (!Clients.Contains(clientSocket))
             {
                 Clients.Add(clientSocket);
             }
             MessageReceiveEvent?.Invoke($"{clientSocket.RemoteEndPoint} Connected");
             receiveThread = new Thread(ReceiveMessage);
             receiveThread.IsBackground = true;
             receiveThread.Start(clientSocket);
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.ToString());
         }
     }
 }
Example #9
0
 /// <summary>
 /// Sets the event which gets called when a message is received
 /// </summary>
 /// <param name="pReceiveEvent">Delegate to the receive-message method</param>
 public void ReceiveMessageEvent(MessageReceiveEvent pReceiveEvent)
 {
     receiveMessageEvent = pReceiveEvent;
 }
 private void OnNewMessageReceived(object sender, MessageReceiveEvent e)
 {
     _newEventReceived = JsonConvert.DeserializeObject <Event>(e.Message.Data);
     _updateRequired   = true;
 }