setsockopt() private method

private setsockopt ( IntPtr s, int level, int optname, void optval, int optlen ) : int
s System.IntPtr
level int
optname int
optval void
optlen int
return int
コード例 #1
0
        public unsafe RioTcpListener(RioFixedBufferPool sendPool, RioFixedBufferPool revicePool, uint socketCount, uint maxOutstandingReceive = 2048, uint maxOutstandingSend = 2048)
            : base(sendPool, revicePool, socketCount, ADDRESS_FAMILIES.AF_INET, SOCKET_TYPE.SOCK_STREAM, PROTOCOL.IPPROTO_TCP, maxOutstandingReceive, maxOutstandingSend)
        {
            if ((_listenerSocket = WinSock.WSASocket(adressFam, sockType, protocol, IntPtr.Zero, 0, SOCKET_FLAGS.REGISTERED_IO | SOCKET_FLAGS.WSA_FLAG_OVERLAPPED)) == IntPtr.Zero)
            {
                WinSock.ThrowLastWSAError();
            }

            int  True    = 1;
            uint dwBytes = 0;

            if (WinSock.WSAIoctlGeneral2(_listenerSocket, WinSock.SIO_LOOPBACK_FAST_PATH, &True, sizeof(int), (void *)0, 0, out dwBytes, IntPtr.Zero, IntPtr.Zero) != 0)
            {
                WinSock.ThrowLastWSAError();
            }
            if (WinSock.setsockopt(_listenerSocket, WinSock.IPPROTO_TCP, WinSock.TCP_NODELAY, &True, 4) != 0)
            {
                WinSock.ThrowLastWSAError();
            }

            if ((_listenIocp = Kernel32.CreateIoCompletionPort(_listenerSocket, _listenIocp, 0, 1)) == IntPtr.Zero)
            {
                Kernel32.ThrowLastError();
            }

            Thread AcceptIocpThread = new Thread(AcceptIocpComplete);

            AcceptIocpThread.IsBackground = true;
            AcceptIocpThread.Start();
        }
コード例 #2
0
ファイル: RioSocket.cs プロジェクト: xela-trawets/RioSharp
        public void SetTcpNoDelay(bool value)
        {
            int v = value ? 1 : 0;

            if (WinSock.setsockopt(Socket, WinSock.IPPROTO_TCP, WinSock.TCP_NODELAY, &v, 4) != 0)
            {
                WinSock.ThrowLastWSAError();
            }
        }
コード例 #3
0
ファイル: RioSocket.cs プロジェクト: cube3power/RioSharp
 public int SetSocketOption(SOL_SOCKET_SocketOptions option, IntPtr value, int valueLength) => WinSock.setsockopt(Socket, WinSock.SOL_SOCKET, (int)option, (char *)value.ToPointer(), valueLength);
コード例 #4
0
ファイル: RioSocket.cs プロジェクト: cube3power/RioSharp
 public int SetSocketOption(IPPROTO_UDP_SocketOptions option, IntPtr value, int valueLength) => WinSock.setsockopt(Socket, WinSock.IPPROTO_UDP, (int)option, (char *)value.ToPointer(), valueLength);
コード例 #5
0
 public int SetSocketOption(IPPROTO_TCP_SocketOptions option, IntPtr value, int valueLength)
 {
     return(WinSock.setsockopt(Socket, WinSock.IPPROTO_TCP, (int)option, (char *)value.ToPointer(), valueLength));
 }
コード例 #6
0
ファイル: RioSocket.cs プロジェクト: xela-trawets/RioSharp
 public int SetSocketOption(MCAST_SocketOptions option, void *value, int valueLength) => WinSock.setsockopt(Socket, WinSock.IPPROTO_IP, (int)option, value, valueLength);
コード例 #7
0
ファイル: RioSocket.cs プロジェクト: xela-trawets/RioSharp
 public int SetSocketOption(SOL_SOCKET_SocketOptions option, void *value, int valueLength) => WinSock.setsockopt(Socket, WinSock.SOL_SOCKET, (int)option, value, valueLength);