public PomeloClient(string host, int port) { this.eventManager = new EventManager(); this.socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); this.protocol = new Protocol(this, socket); _host = host; _port = port; }
public PomeloClient(string host, int port) { this.eventManager = new EventManager(); initClient(host, port); this.protocol = new Protocol(this, socket); }
public HeartBeatService(int interval, Protocol protocol) { this.interval = interval*1000; this.protocol = protocol; }
public HandShakeService(Protocol protocol) { this.protocol = protocol; }
/// <summary> /// initialize pomelo client /// </summary> /// <param name="host">server name or server ip (www.xxx.com/127.0.0.1/::1/localhost etc.)</param> /// <param name="port">server port</param> /// <param name="callback">socket successfully connected callback(in network thread)</param> public void initClient(string host, int port, Action callback = null) { timeoutEvent.Reset(); eventManager = new EventManager(); NetWorkChanged(NetWorkState.CONNECTING); IPAddress ipAddress = null; try { IPAddress[] addresses = Dns.GetHostAddresses(host); foreach (var item in addresses) { if (item.AddressFamily == AddressFamily.InterNetwork) { ipAddress = item; break; } } } catch (Exception e) { NetWorkChanged(NetWorkState.ERROR); return; } if (ipAddress == null) { throw new Exception("can not parse host : " + host); } this.socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint ie = new IPEndPoint(ipAddress, port); socket.BeginConnect(ie, new AsyncCallback((result) => { try { this.socket.EndConnect(result); this.protocol = new Protocol(this, this.socket); NetWorkChanged(NetWorkState.CONNECTED); if (callback != null) { callback(); } } catch (SocketException e) { if (netWorkState != NetWorkState.TIMEOUT) { NetWorkChanged(NetWorkState.ERROR); } Dispose(); } finally { timeoutEvent.Set(); } }), this.socket); if (timeoutEvent.WaitOne(timeoutMSec, false)) { if (netWorkState != NetWorkState.CONNECTED && netWorkState != NetWorkState.ERROR) { NetWorkChanged(NetWorkState.TIMEOUT); Dispose(); } } }
public HeartBeatService(int interval, Protocol protocol) { this.interval = interval * 1000; this.protocol = protocol; }
/// <summary> /// initialize pomelo client /// </summary> /// <param name="host">server name or server ip (www.xxx.com/127.0.0.1/::1/localhost etc.)</param> /// <param name="port">server port</param> /// <param name="callback">socket successfully connected callback(in network thread)</param> public void initClient(string host, int port, Action callback = null) { timeoutEvent.Reset(); eventManager = new EventManager(); NetWorkChanged(NetWorkState.CONNECTING); IPAddress ipAddress = null; IPAddress ipAddressV6 = null; try { IPAddress[] addresses = Dns.GetHostEntry(host).AddressList; foreach (var item in addresses) { if (item.AddressFamily == AddressFamily.InterNetworkV6) { ipAddressV6 = item; break; } } if (ipAddressV6 == null) { foreach (var item in addresses) { if (item.AddressFamily == AddressFamily.InterNetwork) { ipAddress = item; break; } } } } catch (Exception e) { NetWorkChanged(NetWorkState.ERROR); return; } if (ipAddressV6 == null && ipAddress == null) { throw new Exception("can not parse host : " + host); } IPEndPoint ie = null; if (ipAddressV6 != null) { this.socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp); ie = new IPEndPoint(ipAddressV6, port); } else { this.socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ie = new IPEndPoint(ipAddress, port); } socket.BeginConnect(ie, new AsyncCallback((result) => { try { this.socket.EndConnect(result); this.protocol = new Protocol(this, this.socket); NetWorkChanged(NetWorkState.CONNECTED); if (callback != null) { callback(); } } catch (SocketException e) { if (netWorkState != NetWorkState.TIMEOUT) { NetWorkChanged(NetWorkState.ERROR); } Dispose(); } finally { timeoutEvent.Set(); } }), this.socket); if (timeoutEvent.WaitOne(timeoutMSec, false)) { if (netWorkState != NetWorkState.CONNECTED && netWorkState != NetWorkState.ERROR) { NetWorkChanged(NetWorkState.TIMEOUT); Dispose(); } } }
public HeartBeatService(int timeout, Protocol protocol) { this.interval = timeout*1000; this.protocol = protocol; }