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); } }
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); } }
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(); } } }
private void Client_OnConnectCompletedEvent(SocketClientResult res) { Debug.LogFormat("Connect done ! Result:{0}", res); }
private void Client_OnReceiveCompletedEvent(byte[] data, SocketClientResult res) { Debug.LogFormat("Receive done ! Data:{0} Result:{1}", Encoding.UTF8.GetString(data), res); }
private void Client_OnSendCompletedEvent(SocketClientResult res) { Debug.LogFormat("Send done ! Result:{0}", res); }