예제 #1
0
 private void RaiseOtherException(TCPClientState state)
 {
     RaiseOtherException(state, "");
 }
예제 #2
0
 public AsyncEventArgs(string msg, TCPClientState state)
 {
     this._msg = msg;
     this._state = state;
     IsHandled = false;
 }
예제 #3
0
 /// <summary>
 /// 发送数据
 /// </summary>
 /// <param name="state">接收数据的客户端会话</param>
 /// <param name="data">数据报文</param>
 public void Send(TCPClientState state, byte[] data)
 {
     RaisePrepareSend(state);
     Send(state.TcpClient, data);
 }
예제 #4
0
 /// <summary>
 /// 触发发送数据前的事件
 /// </summary>
 /// <param name="state"></param>
 private void RaisePrepareSend(TCPClientState state)
 {
     if (PrepareSend != null)
     {
         PrepareSend(this, new AsyncEventArgs(state));
     }
 }
예제 #5
0
 public AsyncEventArgs(TCPClientState state)
 {
     this._state = state;
     IsHandled = false;
 }
예제 #6
0
 /// <summary>
 /// 触发异常事件
 /// </summary>
 /// <param name="state"></param>
 private void RaiseOtherException(TCPClientState state, string descrip)
 {
     if (OtherException != null)
     {
         OtherException(this, new AsyncEventArgs(descrip, state));
     }
 }
예제 #7
0
 private void RaiseOtherException(TCPClientState state)
 {
     RaiseOtherException(state, "");
 }
예제 #8
0
 private void RaiseDataReceived(TCPClientState state)
 {
     if (DataReceived != null)
     {
         DataReceived(this, new AsyncEventArgs(state));
     }
 }
예제 #9
0
 /// <summary>
 /// 触发网络错误事件
 /// </summary>
 /// <param name="state"></param>
 private void RaiseNetError(TCPClientState state)
 {
     if (NetError != null)
     {
         NetError(this, new AsyncEventArgs(state));
     }
 }
예제 #10
0
 /// <summary>
 /// 触发客户端连接断开事件
 /// </summary>
 /// <param name="client"></param>
 private void RaiseClientDisconnected(TCPClientState state)
 {
     if (ClientDisconnected != null)
     {
         ClientDisconnected(this, new AsyncEventArgs("连接断开"));
     }
 }
예제 #11
0
 /// <summary>
 /// 触发数据发送完毕的事件
 /// </summary>
 /// <param name="state"></param>
 private void RaiseCompletedSend(TCPClientState state)
 {
     if (CompletedSend != null)
     {
         CompletedSend(this, new AsyncEventArgs(state));
     }
 }
예제 #12
0
        /// <summary>
        /// 处理客户端连接的函数
        /// </summary>
        /// <param name="ar"></param>
        private void HandleTcpClientAccepted(IAsyncResult ar)
        {
            if (IsRunning)
            {
                //TcpListener tcpListener = (TcpListener)ar.AsyncState;

                TcpClient client = _listener.EndAcceptTcpClient(ar);
                byte[] buffer = new byte[client.ReceiveBufferSize];

                TCPClientState state = new TCPClientState(client, buffer);
                lock (_clients)
                {
                    _clients.Add(state);
                    RaiseClientConnected(state);
                }

                NetworkStream stream = state.NetworkStream;
                //开始异步读取数据
                stream.BeginRead(state.Buffer, 0, state.Buffer.Length, HandleDataReceived, state);

                _listener.BeginAcceptTcpClient(
                  new AsyncCallback(HandleTcpClientAccepted), ar.AsyncState);
            }
        }
예제 #13
0
 /// <summary>
 /// 发送数据
 /// </summary>
 /// <param name="state">接收数据的客户端会话</param>
 /// <param name="data">数据报文</param>
 public void Send(TCPClientState state, byte[] data)
 {
     RaisePrepareSend(state);
     Send(state.TcpClient, data);
 }
예제 #14
0
 /// <summary>
 /// 关闭一个与客户端之间的会话
 /// </summary>
 /// <param name="state">需要关闭的客户端会话对象</param>
 public void Close(TCPClientState state)
 {
     if (state != null)
     {
         state.Close();
         _clients.Remove(state);
         _clientCount--;
         //TODO 触发关闭事件
     }
 }
예제 #15
0
 private static void clientconnect_callback(object os, AsyncEventArgs state)
 {
     show_connect_info("connect:" + state._state.TcpClient.Client.RemoteEndPoint.ToString());
     client_fd = state._state;//保存client信息,发送会用到
     send_read_gain();
 }
예제 #16
0
 /// <summary>
 /// 发送数据
 /// </summary>
 /// <param name="state"></param>
 /// <param name="data"></param>
 private static void sendDatatoClient(TCPClientState state, byte[] data)
 {
     myTcpServer.Send(state, data);
 }