public static int getIntOption0(FileDescriptor fd, bool mayNeedConversion, int level, int opt) { #if FIRST_PASS return(0); #else if (level == global::[email protected]_IPV6 && opt == global::[email protected]_TCLASS) { return(0); } System.Net.Sockets.SocketOptionLevel sol = (System.Net.Sockets.SocketOptionLevel)level; System.Net.Sockets.SocketOptionName son = (System.Net.Sockets.SocketOptionName)opt; try { object obj = fd.getSocket().GetSocketOption(sol, son); System.Net.Sockets.LingerOption linger = obj as System.Net.Sockets.LingerOption; if (linger != null) { return(linger.Enabled ? linger.LingerTime : -1); } return((int)obj); } catch (System.Net.Sockets.SocketException x) { if (mayNeedConversion) { if (x.ErrorCode == global::java.net.SocketUtil.WSAENOPROTOOPT && sol == System.Net.Sockets.SocketOptionLevel.IP && son == System.Net.Sockets.SocketOptionName.TypeOfService) { return(0); } } throw global::java.net.SocketUtil.convertSocketExceptionToIOException(x); } catch (System.ObjectDisposedException) { throw new global::java.net.SocketException("Socket is closed"); } #endif }
/// <summary> /// ��ʼ������Socketͨ�Ż��� /// </summary> /// <param name="localIPAddress">������ַ</param> /// <param name="localPort">�����˿�</param> /// <returns>���ز����Ƿ�ɹ�</returns> public bool InitSocket(System.Net.IPAddress localIPAddress, int localPort) { bool Active = false; IsStopServer = false; _Socket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); System.Net.Sockets.LingerOption option = new System.Net.Sockets.LingerOption(false, 10); _Socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, System.Net.Sockets.SocketOptionName.Linger, option); try { if (LocalPort == 0) { Random rd = new Random(); LocalPort = rd.Next(2000, 60000); } this.LocalIPAddress = localIPAddress; this.LocalPort = localPort; IPEndPoint ep = new IPEndPoint(LocalIPAddress, LocalPort); _Socket.Bind(ep); Active = true; } catch (Exception ex) { Active = false; if (OnError != null) OnError(this, new CSS.IM.Library.Net.SockEventArgs(5, ex.Message)); } return Active; }
/// <summary> /// ��ʼ��Socket���� /// </summary> /// <param name="LocalIPAddress">������ַ</param> /// <param name="LocalPort">�����˿�</param> /// <returns>���ز����Ƿ�ɹ�</returns> private bool InitSocket(System.Net.IPAddress LocalIPAddress, int LocalPort) { bool Active = false; IsStopServer = false; _Socket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); System.Net.Sockets.LingerOption Option = new System.Net.Sockets.LingerOption(false, 10); _Socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, System.Net.Sockets.SocketOptionName.Linger, Option); try { IPEndPoint ep = new IPEndPoint(LocalIPAddress, LocalPort); _Socket.Bind(ep); Active = true; } catch (Exception ex) { Active = false; Error(this, new CSS.IM.Library.Net.SockEventArgs(1, ex.Message)); } return Active; }
public static void SetLingerOption(System.Net.Sockets.Socket socket, System.Net.Sockets.LingerOption lingerOption) { socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, System.Net.Sockets.SocketOptionName.Linger, lingerOption); }