public void DisconnectClient(string ip) { if (!IsRunning) { OnDisconnectClientCompletedEvent?.Invoke(ip, SocketServerResult.ServerNotRunning); return; } SocketServerResult sRes = SocketServerResult.None; try { IClientSocket client = this[ip]; client.Close(); _clientDic.Remove(ip); sRes = SocketServerResult.Success; } catch { sRes = SocketServerResult.Exception; } finally { OnDisconnectClientCompletedEvent?.Invoke(ip, sRes); } }
public void Close() { if (!IsRunning) { OnCloseCompletedEvent?.Invoke(SocketServerResult.ServerNotRunning); return; } SocketServerResult sRes = SocketServerResult.None; DisconnectAllClient(); try { _isRunning = false; _socket.Close(); _socket = null; sRes = SocketServerResult.Success; } catch { sRes = SocketServerResult.Exception; } finally { OnCloseCompletedEvent?.Invoke(sRes); } }
private void OnReceiveCallback(IAsyncResult result) { if (!IsRunning) { OnReceiveCompletedEvent?.Invoke(string.Empty, null, SocketServerResult.ServerNotRunning); return; } string ip = string.Empty; SocketServerResult sRes = SocketServerResult.None; byte[] data = null; int length = 0; try { ip = result.AsyncState as string; IClientSocket client = this[ip]; length = client.Socket.EndReceive(result); if (length > 0) { data = new byte[length]; Array.Copy(client.CacheBuffer, data, length); sRes = SocketServerResult.Success; } else { DisconnectClient(ip); } } catch { sRes = SocketServerResult.Exception; } finally { if (length > 0) { OnReceiveCompletedEvent?.Invoke(ip, data, sRes); Receive(ip); } } }
private void OnAcceptCallback(IAsyncResult result) { string ip = string.Empty; SocketServerResult sRes = SocketServerResult.None; try { Socket socket = result.AsyncState as Socket; Socket clientSocket = socket.EndAccept(result); ip = (clientSocket.RemoteEndPoint as IPEndPoint)?.Address?.ToString(); if (!string.IsNullOrEmpty(ip)) { IClientSocket cSocket = new ClientSocket(clientSocket); this[ip] = cSocket; Receive(ip); sRes = SocketServerResult.Success; } else { throw new Exception("<Ming> ## Uni Excption ## Cls:TcpSocketServer Func:OnAcceptCallback Info:Accept ip is null"); } } catch { sRes = SocketServerResult.Exception; } finally { OnAcceptCompletedEvent?.Invoke(ip, sRes); Accept(); } }
private void OnSendCallback(IAsyncResult result) { SocketServerResult sRes = SocketServerResult.None; string ip = string.Empty; try { ip = result.AsyncState as string; this[ip].Socket.EndSend(result); sRes = SocketServerResult.Success; } catch { sRes = SocketServerResult.Exception; } finally { OnSendCompletedEvent?.Invoke(ip, sRes); } }
private static void Server_OnAcceptCompletedEvent(string ip, SocketServerResult res) { Console.WriteLine(string.Format("Accept client done ! ip:{0} result:{1}", ip, res)); }
private static void Server_OnCloseCompletedEvent(SocketServerResult res) { Console.WriteLine(string.Format("Close server done ! result:{0}", res)); }
private static void Server_OnReceiveCompletedEvent(string ip, byte[] data, SocketServerResult res) { Console.WriteLine(string.Format("Receive data done ! ip:{0} result:{1} data:{2}", ip, res, Encoding.UTF8.GetString(data))); }
private static void Server_OnSendCompletedEvent(string ip, SocketServerResult res) { Console.WriteLine(string.Format("Send data done ! ip:{0} result:{1}", ip, res)); }