
golang判断tcp是否断开的方法:
keepalive检测,对于设置了keepalive来说,当tcp检测到对端socket不再可用时(不能发出探测包,或探测包没有收到ACK的响应包),select会返回socket可读,并且在recv时返回-1,同时置上errno为ETIMEDOUT。此时TCP的状态是断开的。
诚客在线考试是由南宁诚客网络科技有限公司开发的一款手机移动端的答题网站软件,它应用广泛适合各种学校、培训班、教育机构、公司企业、事业单位、各种社会团体、银行证券等用于学生学习刷题、员工内部培训,学员考核、员工对公司制度政策的学习……可使用的题型有:单选题、多选题、判断题支持文字,图片,音频,视频、数学公式。可以设置考试时间,答题时间,考试次数,是否需要补考,是否可以看到自己成绩。练习模式,支持学生
0
struct TCP_KEEPALIVE {
unsigned long onoff;
unsigned long keepalivetime;
unsigned long keepaliveinterval;
} ;
#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4)
/* KeepAlive实现 */
void set_keepalive (SOCKET s)
{
BOOL bKeepAlive = TRUE;
int nRet = ::setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (char*)&bKeepAlive, sizeof(bKeepAlive));
if (nRet == SOCKET_ERROR)
{
return ;
}
/* 输入参数 */
struct TCP_KEEPALIVE inKeepAlive = {0};
unsigned long ulInLen = sizeof(struct TCP_KEEPALIVE);
/* 输出参数 */
struct TCP_KEEPALIVE outKeepAlive = {0};
unsigned long ulOutLen = sizeof(struct TCP_KEEPALIVE);
unsigned long ulBytesReturn = 0;
int ret = 0;
/* 设置keepalive 为5秒,并且发送次数为3次 */
inKeepAlive.onoff = 1;
/* 2次keepalive探测间隔时间 */
inKeepAlive.keepaliveinterval = 5000;
/* 开始首次keepalive探测前的tcp空闲时间 */
inKeepAlive.keepalivetime = 5000;
ret = WSAIoctl((unsigned int)s,
SIO_KEEPALIVE_VALS,
(LPVOID)&inKeepAlive,
ulInLen,
(LPVOID)&outKeepAlive,
ulOutLen,
&ulBytesReturn,
NULL,
NULL);
if (ret == SOCKET_ERROR)
{
printf ("error: %d\n", WSAGetLastError());
}
}更多golang知识请关注golang教程栏目。
以上就是golang判断tcp是否断开的方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号