public void connectTo(string ip, int port, ConnectCallback callback, object userData) { if (valid()) { throw new InvalidOperationException("Have already connected!"); } if (!(new Regex(@"((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))")).IsMatch(ip)) { IPHostEntry ipHost = Dns.GetHostEntry(ip); ip = ipHost.AddressList[0].ToString(); } _socket = createSocket(); ConnectState state = new ConnectState(); state.connectIP = ip; state.connectPort = port; state.connectCB = callback; state.userData = userData; state.socket = _socket; state.networkInterface = this; Dbg.DEBUG_MSG("connect to " + ip + ":" + port + " ..."); connected = false; // 先注册一个事件回调,该事件在当前线程触发 Event.registerIn("_onConnectionState", this, "_onConnectionState"); var v = new AsyncConnectMethod(this._asyncConnect); v.BeginInvoke(state, new AsyncCallback(this._asyncConnectCB), state); }
public void connectTo(string ip, int port, ConnectCallback callback, object userData) { if (valid()) { throw new InvalidOperationException("Have already connected!"); } if (!(new Regex(@"((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))")).IsMatch(ip)) { IPHostEntry ipHost = Dns.GetHostEntry(ip); ip = ipHost.AddressList[0].ToString(); } // Security.PrefetchSocketPolicy(ip, 843); IPAddress[] hostAddresses = Dns.GetHostAddresses(ip); IPAddress[] outIPs = hostAddresses; AddressFamily addressFamily = AddressFamily.InterNetwork; if (Socket.OSSupportsIPv6 && this.IsHaveIpV6Address(hostAddresses, ref outIPs)) { addressFamily = AddressFamily.InterNetworkV6; } _socket = new Socket(addressFamily, SocketType.Stream, ProtocolType.Tcp); _socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, NetworkInterface.TCP_PACKET_MAX * 2); _socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.SendBuffer, NetworkInterface.TCP_PACKET_MAX * 2); _socket.NoDelay = true; //_socket.Blocking = false; ConnectState state = new ConnectState(); state.connectIP = ip; state.connectPort = port; state.connectCB = callback; state.userData = userData; state.socket = _socket; state.networkInterface = this; Dbg.DEBUG_MSG("connect to " + ip + ":" + port + " ..."); connected = false; // 先注册一个事件回调,该事件在当前线程触发 Event.registerIn("_onConnectionState", this, "_onConnectionState"); var v = new AsyncConnectMethod(this._asyncConnect); v.BeginInvoke(state, new AsyncCallback(this._asyncConnectCB), state); }
public void connectTo(string ip, int port, ConnectCallback callback, object userData) { if (valid()) { throw new InvalidOperationException("Have already connected!"); } if (!(new Regex(@"((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))")).IsMatch(ip)) { IPHostEntry ipHost = Dns.GetHostEntry(ip); ip = ipHost.AddressList[0].ToString(); } // Security.PrefetchSocketPolicy(ip, 843); _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, KBEngineApp.app.getInitArgs().getRecvBufferSize() * 2); _socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.SendBuffer, KBEngineApp.app.getInitArgs().getSendBufferSize() * 2); _socket.NoDelay = true; //_socket.Blocking = false; //_udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName()); //_udpSocket.Bind(new IPEndPoint(host.AddressList[0], port)); ConnectState state = new ConnectState(); state.connectIP = ip; state.connectPort = port; state.connectCB = callback; state.userData = userData; state.socket = _socket; state.networkInterface = this; Dbg.DEBUG_MSG("connect to " + ip + ":" + port + " ..."); // 先注册一个事件回调,该事件在当前线程触发 Event.registerIn("_onConnectStatus", this, "_onConnectStatus"); var v = new AsyncConnectMethod(this._asyncConnect); v.BeginInvoke(state, new AsyncCallback(this._asyncConnectCB), state); }
public void connectTo(string ip, int port, ConnectCallback callback, object userData) { if (valid()) throw new InvalidOperationException("Have already connected!"); if (!(new Regex(@"((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))")).IsMatch(ip)) { IPHostEntry ipHost = Dns.GetHostEntry(ip); ip = ipHost.AddressList[0].ToString(); } // Security.PrefetchSocketPolicy(ip, 843); _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, KBEngineApp.app.getInitArgs().getRecvBufferSize() * 2); _socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.SendBuffer, KBEngineApp.app.getInitArgs().getSendBufferSize() * 2); _socket.NoDelay = true; //_socket.Blocking = false; ConnectState state = new ConnectState(); state.connectIP = ip; state.connectPort = port; state.connectCB = callback; state.userData = userData; state.socket = _socket; state.networkInterface = this; Dbg.DEBUG_MSG("connect to " + ip + ":" + port + " ..."); // 先注册一个事件回调,该事件在当前线程触发 Event.registerIn("_onConnectStatus", this, "_onConnectStatus"); var v = new AsyncConnectMethod(this._asyncConnect); v.BeginInvoke(state, new AsyncCallback(this._asyncConnectCB), state); }