/// <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); }
/// <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("连接已关闭"); }