8000 socket 长连接 · Issue #34 · holdyounger/ScopeBlog · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
socket 长连接 #34
Open
Open
@holdyounger

Description

@holdyounger

socket 长连接

BOOL _KeepAlive(SP_SOCKET fd)
{
	//定义结构及宏
	struct KeepAlive
	{
		u_long onoff;
		u_long keepalivetime;
		u_long keepaliveinterval;
	};


#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4)

	//KeepAlive实现
	KeepAlive inKeepAlive = { 0 }; //输入参数
	unsigned long ulInLen = sizeof(KeepAlive);

	KeepAlive outKeepAlive = { 0 }; //输出参数
	unsigned long ulOutLen = sizeof(KeepAlive);
	unsigned long ulBytesReturn = 0;

	//keepalive xp以前的系统发送5次,xp之后的系统发送10
	inKeepAlive.onoff = 1;
	inKeepAlive.keepaliveinterval = 5000; //两次KeepAlive探测间的时间间隔
	inKeepAlive.keepalivetime = 5000; //开始首次KeepAlive探测前的TCP空闭时间

	if (WSAIoctl((SOCKET)fd, SIO_KEEPALIVE_VALS,
		(LPVOID)&inKeepAlive, ulInLen,
		(LPVOID)&outKeepAlive, ulOutLen,
		&ulBytesReturn, NULL, NULL) == SOCKET_ERROR)
	{
		LOGT("Set Keep Alive FAILED.");
		return FALSE;
	}
	else
	{
		LOGT("Set Keep Alive OK.");
		return TRUE;
	}

}

blog link [socket 长连接](https://holdyounger.github.io/Code/网络编程/windows Socket长连接/)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0