socket通信的KeepAlive默认时间是2小时,通过以下代码可以改变其时间,来检测socket通信过程中自网线,服务器网线断等事件

#include

#include "winsock2.h"

#include

#include

#pragma comment(lib, "Ws2_32.lib")

#include

#include "MSTcpIp.h"

using namespace std;

const int BUF_LEN = 1024;

class CDataSocket : public CAsyncSocket

{

public:

void OnConnect(int nErrorCode)

{

}

void OnReceive(int nErrorCode)

{

BYTE byBuf[BUF_LEN + 1];

int nRecv = Receive(byBuf, BUF_LEN);

do

{

byBuf[nRecv] = '\0';

}while ((nRecv = Receive(byBuf, BUF_LEN)) == BUF_LEN);

}

void OnClose(int nErrorCode)

{

}

};

void main()

{

AfxWinInit(::GetModuleHandle(NULL), NULL, NULL, 0);

AfxSocketInit();

CAsyncSocket* psock = new CDataSocket;

psock->Create();

// KeepAlive

BOOL bOptVal = TRUE;

int bOptLen = sizeof(BOOL);

int iOptVal;

int iOptLen = sizeof(int);    if (getsockopt(psock->m_hSocket, SOL_SOCKET, SO_KEEPALIVE,

(char*)& iOptVal, & iOptLen) != SOCKET_ERROR) {

printf("SO_KEEPALIVE Value: %ld\n", iOptVal);

}

if (setsockopt(psock->m_hSocket, SOL_SOCKET, SO_KEEPALIVE,

(char*)& bOptVal, bOptLen) != SOCKET_ERROR) {

printf("Set SO_KEEPALIVE: ON\n");

}

if (getsockopt(psock->m_hSocket, SOL_SOCKET, SO_KEEPALIVE,

(char*)& iOptVal, & iOptLen) != SOCKET_ERROR) {

printf("SO_KEEPALIVE Value: %ld\n", iOptVal);

}

DWORD dwBytes,dwError = 0L ;

tcp_keepalive sKA_Settings = {0}, sReturned = {0} ;

sKA_Settings.onoff = 1 ;

sKA_Settings.keepalivetime = 20000 ; // Keep Alive

sKA_Settings.keepaliveinterval = 1000 ; // Resend if No-Reply

if (WSAIoctl(psock->m_hSocket, SIO_KEEPALIVE_VALS, & sKA_Settings,

sizeof(sKA_Settings), & sReturned, sizeof(sReturned), & dwBytes,

NULL, NULL) != 0)

{

dwError = WSAGetLastError() ;

return ;

}

psock->Connect(_T("XXX.XXX.XXX.XXX"), 5001);

}

java socket 如何设置so_keepalive属性_socket通信的KeepAlive设定相关推荐

  1. Java Socket实现客户端服务端之间的通信

    Java Socket Java Socket编程用于在不同JRE上运行的应用程序之间的通信. Java Socket编程可以是面向连接的或无连接的. Socket和ServerSocket类用于面向 ...

  2. android java style_Android 在Java代码中设置style属性--使用代码创建ProgressBar对象

    强烈推荐: 在andriod开发中,很大一部分都要与资源打交道,比如说:图片,布局文件,字符串,样式等等.这给我们想要开发一些公共的组件带来很大的困难,因为公共的组件可能更愿意以jar包的形式出现.但 ...

  3. java socket发送定长报文_socket编程

    1.socket编程的概念 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请 ...

  4. java socket长连接怎么维持_socket长连接的维持

    import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date;/** * 维持连接的消息对 ...

  5. Java Socket实现基于BIO的TCP通信

    一.BIO BIO,即同步并阻塞.服务端会在ServerSocket对象的accept方法发生阻塞,当有连接进入的时候,才能继续往下执行:读取数据,调用read方法时,也会发生阻塞. 二.服务端 pu ...

  6. 网络基础4(TCP三次握手,四次握手,TCP流量控制,TCP状态转换 , TCP异常断开,设置TCP属性,端口复用)

    TCP协议 TCP通信时序 下图是一次TCP通讯的时序图.TCP连接建立断开.包含大家熟知的三次握手和四次握手. TCP通讯时序 在这个例子中,首先客户端主动发起连接.发送请求,然后服务器端响应请求, ...

  7. java.policy无法修改_如何配置Policy文件进行Java安全策略的设置

    中国人最喜欢访问的网站 只要注册ofo就送你10块钱,还等什么,快来注册吧 Java语言具有完善的安全框架,从编程语言.编译器.解释程序到Java虚拟机,都能确保Java系统不被恶意的代码或敌对的编译 ...

  8. java saxon,如何在Java中将Saxon设置为Xslt处理器?

    小编典典 有多种方法可以执行此操作(按查找优先级顺序): 直接实例化 显式实例化Saxon工厂(对Michael在上面的评论致意): TransformerFactory fact = new net ...

  9. 基于Java的RDMA高性能通信库(二):Java Socket Over RDMA

    目录 1.Comparing JSOR with Java TCP communications 2.Comparing JSOR to Java Sockets Direct Protocol (S ...

最新文章

  1. 程序猿必备的硬核知识,你知道哪些?
  2. php设置文件权限问题,关于.user.ini以及php访问上级文件权限问题
  3. 【洛谷 T47488】 D:希望 (点分治)
  4. all controls within the same view will share the same data Model
  5. java jsp校验提示信息_java Jquery表单校验代码jsp页面
  6. 确定windows系统是32bit还是64bit
  7. swift 计算label的行数方法
  8. [USACO08JAN]牛大赛Cow Contest
  9. 计算机网络中最常用的三种设备,计算机网络基础试卷6
  10. ui自动化html模板,UI自动化学习分享ppt模板
  11. echarts生成三维柱状图
  12. 点割集、边割集、点连通度、边连通度
  13. 已经无限接近于真实!EA下一代寒霜引擎展示令人惊叹的毛发效果
  14. 湖北师范大学计信计科2018届期末实训EduCoder习题 (参考答案)
  15. c++filt解码已损坏的函数名称
  16. FJUT 2019暑假第三次周赛 C - 郭先生的魔法阵
  17. 【音视频流媒体】WebRTC 直播超详细介绍
  18. python socket 域名_Python网络编程中的套接字名和DNS解析。
  19. Ridge Regression and Kernel Ridge Regression
  20. 国信证券学习系列(1)

热门文章

  1. python测量不确定度_chaospy-不确定度量化的数值工具-Jonathan Feinberg Installation Example Usage...
  2. Python中由生成杨辉三角代码所思考的一些问题
  3. Python构造栈结构
  4. 三星手机Android9和10的区别,三星Galaxy S10+ VS 小米9 拍照深度对比评测:神仙打架...
  5. linux大硬盘格式化,linux 格式化大于2T的硬盘
  6. C语言strncmp()函数(把 str1 和 str2 进行比较,最多比较前 n 个字节)
  7. python sip模块(为C和C++库创建Python绑定)
  8. pycharm 提示 ennble Code compatibility inspection(代码兼容性检查)
  9. python opencv imshow()显示窗口中文字符出现乱码 解决方案:将utf-8转换为gbk(未能完全解决)
  10. Concurrent包下的常用并发类和普通类之间的区别