示例#1
0
        public void Disconnect()
        {
            SocketClientResult cRes = SocketClientResult.None;

            try
            {
                if (IsConnected)
                {
                    _socket.Shutdown(SocketShutdown.Both);

                    _socket.Close();

                    _socket = null;

                    cRes = SocketClientResult.Success;
                }
                else
                {
                    cRes = SocketClientResult.NotConnect;
                }
            }
            catch
            {
                cRes = SocketClientResult.Exception;
            }
            finally
            {
                OnDisconnectCompletedEvent?.Invoke(cRes);
            }
        }
示例#2
0
        private void OnSendCallback(IAsyncResult result)
        {
            SocketClientResult cRes = SocketClientResult.None;

            try
            {
                if (IsConnected)
                {
                    Socket socket = result.AsyncState as Socket;

                    socket.EndSend(result);

                    cRes = SocketClientResult.Success;
                }
                else
                {
                    cRes = SocketClientResult.NotConnect;
                }
            }
            catch
            {
                cRes = SocketClientResult.Exception;
            }
            finally
            {
                OnSendCompletedEvent?.Invoke(cRes);
            }
        }
示例#3
0
        private void OnReceiveCallback(IAsyncResult result)
        {
            SocketClientResult cRes = SocketClientResult.None;

            byte[] buffer = null;

            int length = 0;

            try
            {
                if (IsConnected)
                {
                    Socket socket = result.AsyncState as Socket;

                    length = socket.EndReceive(result);

                    buffer = new byte[length];

                    Array.Copy(_receiveBuffer, buffer, length);

                    cRes = SocketClientResult.Success;
                }
                else
                {
                    cRes = SocketClientResult.NotConnect;
                }
            }
            catch
            {
                cRes = SocketClientResult.Exception;
            }
            finally
            {
                if (length > 0)
                {
                    OnReceiveCompletedEvent?.Invoke(buffer, cRes);

                    Receive();
                }
                else
                {
                    Disconnect();
                }
            }
        }
示例#4
0
 private void Client_OnConnectCompletedEvent(SocketClientResult res)
 {
     Debug.LogFormat("Connect done ! Result:{0}", res);
 }
示例#5
0
 private void Client_OnReceiveCompletedEvent(byte[] data, SocketClientResult res)
 {
     Debug.LogFormat("Receive done ! Data:{0} Result:{1}", Encoding.UTF8.GetString(data), res);
 }
示例#6
0
 private void Client_OnSendCompletedEvent(SocketClientResult res)
 {
     Debug.LogFormat("Send done ! Result:{0}", res);
 }