函数名

vtcp_setsockopt

声明

int WINAPI vtcp_setsockopt(VTCP_SOCKET socket, int level,int optname,char* optval,int optlen);

描述

设置VTCP句柄工作参数。

输入

VTCP_SOCKET socket: VTCP句柄,由vtcp_socket函数创建。

int optname: 设置选项。

char* optval: 选项对应数据。

int optlen选项对应数据大小。

 

输出

 

返回值(错误码=0 成功)

ERROR_INVALID_HANDLE VTCP句柄不正确。

ERROR_INVALID_STATE:    VTCP句柄状态不正确。

ERROR_INVALID_PARAMETER: 参数不正确。

 

其他错误参考windows

 

说明

 

level

optname

说明

optval

optlen

SOL_SOCKET

VTCP_SO_LINGER

逗留时间

LINGER 结构

sizeof(LINGER)

SOL_SOCKET

VTCP_SO_CONTIMEO

连接超时(阻塞模式)毫秒

DWORD

sizeof(DWORD)

SOL_SOCKET

VTCP_SO_RCVTIMEO

接收超时(阻塞模式)毫秒

DWORD

sizeof(DWORD)

SOL_SOCKET

VTCP_SO_SNDTIMEO

发送超时(阻塞模式)毫秒

DWORD

sizeof(DWORD)

SOL_SOCKET

VTCP_SO_KEEPALIVE

保活设置

tcp_keepalive 结构

sizeof(tcp_keepalive)

SOL_SOCKET

VTCP_SO_PACKET_SIZE

包最大大小

int

sizeo(int)

SOL_SOCKET

VTCP_SO_PACKET_COUNT

包最大缓存

int

sizeo(int)

SOL_SOCKET

VTCP_SO_PACKET_LOSS_PRECENT

包最大丢失率(%)

int

sizeo(int)

 

 

 

 

 

 

 

参考

setsockopt

 

#define SOL_SOCKET      0xffff          /* options for socket level */

 

enum EVTcpSO

{

VTCP_SO_LINGER                                = 1,//逗留时间(LINGER)

       VTCP_SO_CONTIMEO                          = 2,//连接超时(int)

       VTCP_SO_RCVTIMEO                           = 3,//接收超时(int)

       VTCP_SO_SNDTIMEO                           = 4,//发送超时(int)

       VTCP_SO_KEEPALIVE                           = 5,//保活设置(keepalive)

       VTCP_SO_PACKET_SIZE                      = 6,//最大包大小(int)

       VTCP_SO_PACKET_COUNT                 = 7,//最大包缓存(int)

       VTCP_SO_PACKET_LOSS_PRECENT  = 8,//最大丢包率(int)(百分比)

};

 

struct tcp_keepalive {

    ULONG onoff;

    ULONG keepalivetime;

    ULONG keepaliveinterval;

};

 

struct  linger {

        u_short l_onoff;                /* option on/off */

        u_short l_linger;               /* linger time */

};