/// <summary> /// 启动 /// </summary> private void Run() { if (isDisposed == true) { throw new ObjectDisposedException("ZYServer is Disposed"); } IPEndPoint myEnd = new IPEndPoint(IPAddress.Any, Port); if (!Host.Equals("any", StringComparison.CurrentCultureIgnoreCase)) { if (String.IsNullOrEmpty(Host)) { IPHostEntry p = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress s in p.AddressList) { if (!s.IsIPv6LinkLocal && s.AddressFamily != AddressFamily.InterNetworkV6) { myEnd = new IPEndPoint(s, Port); break; } } } else { try { myEnd = new IPEndPoint(IPAddress.Parse(Host), Port); } catch (FormatException) { IPHostEntry p = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress s in p.AddressList) { if (!s.IsIPv6LinkLocal) { myEnd = new IPEndPoint(s, Port); } } } } } sock = new Socket(myEnd.AddressFamily, SocketType.Dgram, ProtocolType.Udp); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); sock.DontFragment = true; sock.EnableBroadcast = true; SendTimeout = 1000; ReceiveTimeout = 1000; sock.Bind(myEnd); BuffManagers = new BufferManager(MaxConnectCout * MaxBufferSize, MaxBufferSize); BuffManagers.Inint(); SocketAsynPool = new SocketAsyncEventArgsPool(MaxConnectCout); for (int i = 0; i < MaxConnectCout; i++) { SocketAsyncEventArgs socketasyn = new SocketAsyncEventArgs(); socketasyn.RemoteEndPoint = new IPEndPoint(IPAddress.Any, 0); socketasyn.Completed += new EventHandler <SocketAsyncEventArgs>(Asyn_Completed); SocketAsynPool.Push(socketasyn); } reset[0].Set(); Receive(); }
/// <summary> /// 启动 /// </summary> private void Run() { if (isDisposed == true) { throw new ObjectDisposedException("ZYServer is Disposed"); } IPEndPoint myEnd = new IPEndPoint(IPAddress.Any, Port); if (!Host.Equals("any", StringComparison.CurrentCultureIgnoreCase)) { if (String.IsNullOrEmpty(Host)) { IPHostEntry p = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress s in p.AddressList) { if (!s.IsIPv6LinkLocal && s.AddressFamily != AddressFamily.InterNetworkV6) { myEnd = new IPEndPoint(s, Port); break; } } } else { try { myEnd = new IPEndPoint(IPAddress.Parse(Host), Port); } catch (FormatException) { IPHostEntry p = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress s in p.AddressList) { if (!s.IsIPv6LinkLocal) myEnd = new IPEndPoint(s, Port); } } } } sock = new Socket(myEnd.AddressFamily, SocketType.Dgram, ProtocolType.Udp); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); sock.DontFragment = true; sock.EnableBroadcast = true; SendTimeout = 1000; ReceiveTimeout = 1000; sock.Bind(myEnd); BuffManagers = new BufferManager(MaxConnectCout * MaxBufferSize, MaxBufferSize); BuffManagers.Inint(); SocketAsynPool = new SocketAsyncEventArgsPool(MaxConnectCout); for (int i = 0; i < MaxConnectCout; i++) { SocketAsyncEventArgs socketasyn = new SocketAsyncEventArgs(); socketasyn.RemoteEndPoint = new IPEndPoint(IPAddress.Any, 0); socketasyn.Completed += new EventHandler<SocketAsyncEventArgs>(Asyn_Completed); SocketAsynPool.Push(socketasyn); } reset[0].Set(); Receive(); }