示例#1
0
        /// <summary>
        /// Use TCP server to send message to a remote client by GUID (recommanded)
        /// </summary>
        /// <param name="argGuid"></param>
        /// <param name="message"></param>
        public void TcpServerSend(Guid argGuid, string message)
        {
            TcpClientWithGuid client = TcpServerGetRemoteTcpClient(argGuid);

            byte[] messageBytes = Encoding.ASCII.GetBytes(message);
            client.TcpStream.Write(messageBytes, 0, messageBytes.Length);
        }
示例#2
0
 /// <summary>
 /// Wait and listen for client.
 /// </summary>
 private void ListenClientConnect()
 {
     while (true)
     {
         bool enoughClientSign = false;
         for (int i = 0; i < _tcpClientArray.Length; i++)
         {
             if (_tcpClientArray[i] != null)
             {
                 if (_tcpClientArray[i].SignOccupied != false)
                 {
                     continue;
                 }
             }
             enoughClientSign = true;
             TcpClient tempTcpClient = _hostTcpServer.AcceptTcpClient();
             _tcpClientArray[i] = new TcpClientWithGuid();
             try
             {
                 _tcpClientArray[i].Guid      = Guid.NewGuid();
                 _tcpClientArray[i].TcpClient = tempTcpClient;
                 _tcpClientArray[i].TcpClient.ReceiveBufferSize = 10000000;
                 _tcpClientArray[i].SignOccupied  = true;
                 _tcpClientArray[i].TcpStream     = tempTcpClient.GetStream();
                 _tcpClientArray[i].ReceiveThread = new Thread(TcpServerReceiveMessage)
                 {
                     IsBackground = true
                 };
                 _tcpClientArray[i].ReceiveThread.Start(_tcpClientArray[i]);
             }
             catch (Exception)
             {
                 throw;
             }
             _tcpServerNewClient?.Invoke(tempTcpClient.Client.RemoteEndPoint);
             break;
         }
         if (!enoughClientSign)
         {
             throw new NotEnoughTcpServerCapacityException("The capacity of the server is set to be " + MaxClient);
         }
         TcpServerRebuildClientList();
     }
 }
示例#3
0
        /// <summary>
        /// Receive message
        /// </summary>
        /// <param name="argClientWithGuid"></param>
        private void TcpServerReceiveMessage(object argClientWithGuid)
        {
            TcpClientWithGuid tcpClientWithGuid = (TcpClientWithGuid)argClientWithGuid;
            StreamReader      sr = new StreamReader(tcpClientWithGuid.TcpStream);

            while (true)
            {
                string result = sr.ReadLine();
                if (result == null)
                {
                    sr.Dispose();
                    tcpClientWithGuid.Stop();
                }
                else
                {
                    _tcpServerReceiveDelegate(Encoding.ASCII.GetBytes(result));
                }
            }
        }
示例#4
0
        /// <summary>
        /// Use TCP server to send message to a remote client by GUID (recommanded)
        /// </summary>
        /// <param name="argGuid"></param>
        /// <param name="message"></param>
        public void TcpServerSend(Guid argGuid, byte[] message)
        {
            TcpClientWithGuid client = TcpServerGetRemoteTcpClient(argGuid);

            client.TcpStream.Write(message, 0, message.Length);
        }
示例#5
0
        /// <summary>
        /// Use TCP server to send message to a remote client by IP address
        /// </summary>
        /// <param name="argAddress"></param>
        /// <param name="message"></param>
        public void TcpServerSend(IPAddress argAddress, byte[] message)
        {
            TcpClientWithGuid client = GetRemoteTcpClient(argAddress);

            client.TcpStream.Write(message, 0, message.Length);
        }
示例#6
0
        /// <summary>
        /// Use TCP server to send message to a remote client by port number
        /// </summary>
        /// <param name="argPort"></param>
        /// <param name="message"></param>
        public void TcpServerSend(int argPort, byte[] message)
        {
            TcpClientWithGuid client = GetRemoteTcpClient(argPort);

            client.TcpStream.Write(message, 0, message.Length);
        }