Ejemplo n.º 1
0
 /// <summary>
 /// 初始化TCP客户端
 /// </summary>
 /// <param name="ip">目标主机的IP地址</param>
 /// <param name="port">端口</param>
 /// <param name="callback">处理数据的回调函数</param>
 public void init(string ip, int port, SFClientCallback callback, SFSocketStateCallback stateCallback)
 {
     m_ipend         = new IPEndPoint(IPAddress.Parse(ip), port);
     m_socket        = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
     m_callback      = callback;
     m_stateCallback = stateCallback;
     m_isReady       = false;
     m_totalSend     = 0;
     m_totalRecv     = 0;
     m_startTime     = SFUtils.getTimeStampNow();
     m_recvBuffer    = "";
     m_socket.BeginConnect(m_ipend, result =>
     {
         try
         {
             m_socket.EndConnect(result);
             m_isReady = true;
             m_stateCallback((int)ESocketState.eST_OK);
             socketRecv();
         }
         catch (Exception)
         {
             m_stateCallback((int)ESocketState.eST_Error);
         }
     }, null);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 关闭TCP客户端
        /// </summary>
        public void uninit()
        {
            if (m_socket != null)
            {
                if (m_socket.Connected)
                {
                    m_socket.Disconnect(false);
                }
                m_socket.Close();
                m_socket = null;
            }
            m_isReady = false;
            long  endTime   = SFUtils.getTimeStampNow();
            float totalTime = endTime - m_startTime;

            if (totalTime < 1)
            {
                totalTime = 1;
            }
            SFUtils.log("共发送{0:F2} KB, 共接收{0:F2} KB", totalSendLength / 1024.0, totalRecvLength / 1024.0);
            SFUtils.log("平均流量:{0:F2} KB/sec", 1.0 * (totalSendLength + totalRecvLength) / totalTime / 1024.0);
            SFUtils.log("连接已关闭");
        }