golang判断tcp是否断开的方法


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

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是否断开的方法的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

go-zap

详解 go 语言中的方法

聊聊dubbo-go-proxy的loggerfilter

go基础及语法(二)

golang 一份漂亮的dockerfile

关于golang之排序使用

golang用户登录怎么做

golang 架构设计原则 迪米特法则

go语言操作数据库及其常规操作

go实现ssh远程执行命令

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...