java socket 如何设置so_keepalive属性_socket通信的KeepAlive设定
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设定相关推荐
- Java Socket实现客户端服务端之间的通信
Java Socket Java Socket编程用于在不同JRE上运行的应用程序之间的通信. Java Socket编程可以是面向连接的或无连接的. Socket和ServerSocket类用于面向 ...
- android java style_Android 在Java代码中设置style属性--使用代码创建ProgressBar对象
强烈推荐: 在andriod开发中,很大一部分都要与资源打交道,比如说:图片,布局文件,字符串,样式等等.这给我们想要开发一些公共的组件带来很大的困难,因为公共的组件可能更愿意以jar包的形式出现.但 ...
- java socket发送定长报文_socket编程
1.socket编程的概念 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请 ...
- java socket长连接怎么维持_socket长连接的维持
import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date;/** * 维持连接的消息对 ...
- Java Socket实现基于BIO的TCP通信
一.BIO BIO,即同步并阻塞.服务端会在ServerSocket对象的accept方法发生阻塞,当有连接进入的时候,才能继续往下执行:读取数据,调用read方法时,也会发生阻塞. 二.服务端 pu ...
- 网络基础4(TCP三次握手,四次握手,TCP流量控制,TCP状态转换 , TCP异常断开,设置TCP属性,端口复用)
TCP协议 TCP通信时序 下图是一次TCP通讯的时序图.TCP连接建立断开.包含大家熟知的三次握手和四次握手. TCP通讯时序 在这个例子中,首先客户端主动发起连接.发送请求,然后服务器端响应请求, ...
- java.policy无法修改_如何配置Policy文件进行Java安全策略的设置
中国人最喜欢访问的网站 只要注册ofo就送你10块钱,还等什么,快来注册吧 Java语言具有完善的安全框架,从编程语言.编译器.解释程序到Java虚拟机,都能确保Java系统不被恶意的代码或敌对的编译 ...
- java saxon,如何在Java中将Saxon设置为Xslt处理器?
小编典典 有多种方法可以执行此操作(按查找优先级顺序): 直接实例化 显式实例化Saxon工厂(对Michael在上面的评论致意): TransformerFactory fact = new net ...
- 基于Java的RDMA高性能通信库(二):Java Socket Over RDMA
目录 1.Comparing JSOR with Java TCP communications 2.Comparing JSOR to Java Sockets Direct Protocol (S ...
最新文章
- 程序猿必备的硬核知识,你知道哪些?
- php设置文件权限问题,关于.user.ini以及php访问上级文件权限问题
- 【洛谷 T47488】 D:希望 (点分治)
- all controls within the same view will share the same data Model
- java jsp校验提示信息_java Jquery表单校验代码jsp页面
- 确定windows系统是32bit还是64bit
- swift 计算label的行数方法
- [USACO08JAN]牛大赛Cow Contest
- 计算机网络中最常用的三种设备,计算机网络基础试卷6
- ui自动化html模板,UI自动化学习分享ppt模板
- echarts生成三维柱状图
- 点割集、边割集、点连通度、边连通度
- 已经无限接近于真实!EA下一代寒霜引擎展示令人惊叹的毛发效果
- 湖北师范大学计信计科2018届期末实训EduCoder习题 (参考答案)
- c++filt解码已损坏的函数名称
- FJUT 2019暑假第三次周赛 C - 郭先生的魔法阵
- 【音视频流媒体】WebRTC 直播超详细介绍
- python socket 域名_Python网络编程中的套接字名和DNS解析。
- Ridge Regression and Kernel Ridge Regression
- 国信证券学习系列(1)
热门文章
- python测量不确定度_chaospy-不确定度量化的数值工具-Jonathan Feinberg Installation Example Usage...
- Python中由生成杨辉三角代码所思考的一些问题
- Python构造栈结构
- 三星手机Android9和10的区别,三星Galaxy S10+ VS 小米9 拍照深度对比评测:神仙打架...
- linux大硬盘格式化,linux 格式化大于2T的硬盘
- C语言strncmp()函数(把 str1 和 str2 进行比较,最多比较前 n 个字节)
- python sip模块(为C和C++库创建Python绑定)
- pycharm 提示 ennble Code compatibility inspection(代码兼容性检查)
- python opencv imshow()显示窗口中文字符出现乱码 解决方案:将utf-8转换为gbk(未能完全解决)
- Concurrent包下的常用并发类和普通类之间的区别