public void ConverrtDoubleTestAtEven(int _index, string converted)
        {
            ConvertStringManager manager = new ConvertStringManager("012345");

            manager.ConvertDouble();
            Assert.Equal(converted, manager.StringList[_index]);
        }
Esempio n. 2
0
        /// <summary>
        /// 异步接收数据
        /// </summary>
        /// <param name="ar"></param>
        private void ClientReadCallback(IAsyncResult ar)
        {
            IClient iClient = (IClient)ar.AsyncState;

            try
            {
                int bytesRead = iClient.WorkSocket.EndReceive(ar);
                if (bytesRead > 0)
                {
                    //byte[] haveDate = ReceiveDateOne.DateOneManage(iClient, bytesRead);//接收完成之后对数组进行重置
                    byte[] bytes = new byte[bytesRead];
                    Array.Copy(iClient.BufferInfo.ReceivedBuffer, 0, bytes, 0, bytesRead);
                    string clientRecevieStr = "";
                    #region WebSocket验证
                    //验证websocket握手协议
                    if (iClient != null && iClient.ClientStyle != ClientStyle.WebSocket)
                    {
                        clientRecevieStr = ASCIIEncoding.Default.GetString(iClient.BufferInfo.ReceivedBuffer, 0, bytesRead);
                        //如果客户端不存在则退出检测
                        WebSocketHandShake(iClient, clientRecevieStr, bytes);
                    }
                    if (iClient.ClientStyle == ClientStyle.WebSocket)
                    {
                        string webstr = AnalyticData(bytes, bytes.Length);
                        clientRecevieStr = webstr;
                        bytes            = Encoding.Default.GetBytes(clientRecevieStr);
                    }
                    #endregion
                    TcpServerRecevice(iClient, bytes);
                    TcpServerGetLog(iClient, LogType.ReceviedData, ConvertStringManager.HexByteArrayToString(bytes));
                    iClient.WorkSocket.BeginReceive(iClient.BufferInfo.ReceivedBuffer, 0,
                                                    iClient.BufferInfo.ReceivedBuffer.Length, 0,
                                                    new AsyncCallback(ClientReadCallback), iClient);
                }
                else if (bytesRead == 0)
                {
                    //接收数据长度为0时,标示客户单下线
                    if (iClient != null)
                    {
                        ShutdownClient(iClient);
                        TcpServerStateInfo(iClient, string.Format("<{0}:{1}>---下线", iClient.Ip, iClient.Port),
                                           SocketState.ClientOnOff);
                        RemoveClient(iClient, "客户端下线");
                        TcpServerOfflineClient(iClient);
                        ClientSocketList.Remove(iClient);
                        TcpServerReturnClientCount(ClientSocketList.Count);
                    }
                }
            }
            catch (Exception ex)
            {
                TcpServerErrorMsg(string.Format("接收客户端数据时发生错误,错误原因:{0},行号{1}", ex.Message, ex.StackTrace));
                int i = ex.Message.IndexOf("远程主机强迫关闭了一个现有的连接");
                if (iClient != null && i != -1)
                {
                    RemoveClient(iClient, ex.Message);
                }
                iClient = null;
            }
        }
Esempio n. 3
0
 /// <summary>
 /// 向指定客户端发送字符串数据
 /// </summary>
 /// <param name="iClient"></param>
 /// <param name="msg"></param>
 /// <param name="isHexString"></param>
 public void SendData(IClient iClient, string msg, bool isHexString = false)
 {
     byte[] data;
     if (isHexString)
     {
         data = ConvertStringManager.StringToHexByteArray(msg);
     }
     else
     {
         data = Encoding.Default.GetBytes(msg);
     }
     SendData(iClient, data);
 }
Esempio n. 4
0
        /// <summary>
        /// 向指定IP和端口客户端发送字符串数据
        /// </summary>
        /// <param name="ip"></param>
        /// <param name="port"></param>
        /// <param name="msg"></param>
        /// <param name="isHexString"></param>
        public void SendData(string ip, int port, string msg, bool isHexString = false)
        {
            IClient iClient = FindIClient(ip, port);

            if (iClient == null)
            {
                return;
            }
            byte[] data;
            if (isHexString)
            {
                data = ConvertStringManager.StringToHexByteArray(msg);
            }
            else
            {
                data = Encoding.Default.GetBytes(msg);
            }
            SendData(iClient, data);
        }
Esempio n. 5
0
 /// <summary>
 /// 向指定客户端发送数据(基础)
 /// </summary>
 /// <param name="iClient">客户端</param>
 /// <param name="data">字节数组数据</param>
 public void SendData(IClient iClient, byte[] data)
 {
     try
     {
         if (iClient != null)
         {
             if (!iClient.WorkSocket.Connected)
             {
                 DisposeClient(iClient);
                 return;
             }
             //异步发送数据
             //cModel.ClientSocket.Send(data);
             iClient.WorkSocket.BeginSend(data, 0, data.Length, 0, new AsyncCallback(SendCallback), iClient);
             iClient.BufferInfo.SendBuffer = data;
             TcpServerGetLog(iClient, LogType.SendData, ConvertStringManager.HexByteArrayToString(data));
         }
     }
     catch (SocketException ex)
     {
         DisposeClient(iClient);
     }
 }