Esempio n. 1
0
 void OnOpen(object sender, System.EventArgs arg)
 {
     if (onNetRespEvent != null)
     {
         onNetRespEvent(NetMsg.Create(NetMsgType.Connect));
     }
 }
Esempio n. 2
0
 void OnClose(object sender, CloseEventArgs arg)
 {
     if (onNetRespEvent != null)
     {
         onNetRespEvent(NetMsg.Create(NetMsgType.Disconnect, "OnClose"));
     }
 }
Esempio n. 3
0
    /// <summary>
    /// 连接上服务器
    /// </summary>
    void OnConnect(IAsyncResult asr)
    {
        outStream = client.GetStream();
        client.GetStream().BeginRead(byteBuffer, 0, MAX_READ, new AsyncCallback(OnRead), null);

        if (_onNetRespEvent != null)
        {
            OnNetRespEvent(NetMsg.Create(NetMsgType.Connect));
        }
    }
Esempio n. 4
0
 public bool Close(string reason)
 {
     if (socket == null)
     {
         return(false);
     }
     //if (socket.Connected)
     {
         socket.Close();
     }
     socket = null;
     onNetRespEvent(NetMsg.Create(NetMsgType.Disconnect, reason));
     return(true);
 }
Esempio n. 5
0
    public bool Close(string reason)
    {
        bool result = false;

        if (webSocket != null && webSocket.IsAlive)
        {
            webSocket.Close();
            ((IDisposable)webSocket).Dispose();
            webSocket = null;
            result    = true;
        }
        onNetRespEvent(NetMsg.Create(NetMsgType.Disconnect, reason));
        return(result);
    }
Esempio n. 6
0
 public bool Close(string reason)
 {
     lock (_lockObject)
     {
         if (_socket == null)
         {
             return(false);
         }
         if (_socket.Connected)
         {
             _socket.Close();
         }
         _socket.Dispose();
         _socket = null;
         _onNetRespEvent(NetMsg.Create(NetMsgType.Disconnect, reason));
         return(true);
     }
 }
Esempio n. 7
0
    void OnMessage(object sender, MessageEventArgs arg)
    {
        if (onNetRespEvent != null)
        {
            var _event = NetMsg.Create(NetMsgType.Connect);
            if (arg.IsBinary)
            {
                _event.Data    = arg.RawData;
                _event.MsgType = NetMsgType.Message;
            }
            else if (arg.IsText)
            {
                _event.MsgType = NetMsgType.Message;
                _event.Data    = Encoding.UTF8.GetBytes(arg.Data);
            }

            onNetRespEvent(_event);
        }
    }
Esempio n. 8
0
    /// <summary>
    /// 读取消息
    /// </summary>
    void OnRead(IAsyncResult asr)
    {
        int bytesRead = 0;

        try
        {
            lock (client.GetStream())
            {
                //读取字节流到缓冲区
                bytesRead = client.GetStream().EndRead(asr);
            }
            if (bytesRead < 1)
            {
                //包尺寸有问题,断线处理
                OnDisconnected(DisType.Disconnect, "bytesRead < 1");
                return;
            }

            if (decoder != null)
            {
                byte[] msg = decoder.Decode(byteBuffer, bytesRead);
                if (msg != null)
                {
                    var _event = NetMsg.Create(NetMsgType.Message);
                    _event.Data = msg;
                    OnNetRespEvent(_event);
                }
            }
            //OnReceive(byteBuffer, bytesRead);   //分析数据包内容,抛给逻辑层

            lock (client.GetStream())
            {
                //分析完,再次监听服务器发过来的新消息
                Array.Clear(byteBuffer, 0, byteBuffer.Length); //清空数组
                client.GetStream().BeginRead(byteBuffer, 0, MAX_READ, new AsyncCallback(OnRead), null);
            }
        }
        catch (Exception ex)
        {
            //PrintBytes();
            OnDisconnected(DisType.Exception, ex.Message);
        }
    }
Esempio n. 9
0
    public bool Close()
    {
        if (client != null)
        {
            bool state = client.Connected;
            if (state)
            {
                client.Close();
            }

            client = null;
            if (state && _onNetRespEvent != null)
            {
                OnNetRespEvent(NetMsg.Create(NetMsgType.Disconnect));
                //onDisConnected(Id);
            }
            return(state);
        }
        return(false);
    }
Esempio n. 10
0
    private void IoCompleted(object sender, SocketAsyncEventArgs e)
    {
        try
        {
            if (!CheckSocketState(e))
            {
                return;
            }
            switch (e.LastOperation)
            {
            case SocketAsyncOperation.Receive:
                ReceiveCompleted(e);
                break;

            case SocketAsyncOperation.Send:
                SendCompleted(e);
                break;

            case SocketAsyncOperation.Connect:
                PackIdReset();
                _onNetRespEvent(NetMsg.Create(NetMsgType.Connect));
                ReceiveAsync();
                break;

            case SocketAsyncOperation.Disconnect:
                Close("LastOperation.Disconnect");
                break;

            default:
                Close("LastOperation" + e.LastOperation);
                break;
            }
        }
        catch (Exception ex)
        {
            Close("IoCompleted:\n" + ex);
        }
    }