社区
通信技术
帖子详情
请教面向连接的socket问题
horsehorse
2001-11-05 11:30:16
加精
面向连接的socket通讯时,如果一方突然掉电,来不及通知另一方,对方怎么知道此socket已经无效?
...全文
137
13
打赏
收藏
请教面向连接的socket问题
面向连接的socket通讯时,如果一方突然掉电,来不及通知另一方,对方怎么知道此socket已经无效?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
copy_paste
2001-12-09
打赏
举报
回复
听听
horsehorse
2001-11-07
打赏
举报
回复
算了,我看还是自己发心跳消息吧。
wwwunix
2001-11-06
打赏
举报
回复
另:保活分节的时间间隔一般为2小时,不过这个时间可以改变。
wwwunix
2001-11-06
打赏
举报
回复
select( 0, &readSocketSet, NULL, &errSocketSet, &timeout );
的第一个参数为测试的描述字的个数,它的值是要被测的最大描述字加一。
horsehorse
2001-11-06
打赏
举报
回复
设置SO_KEEPALIVE的代码如lurenfu所说,select检测的代码如下:
struct timeval timeout = { 0, 0 };
fd_set readSocketSet;
fd_set errSocketSet;
FD_ZERO( &readSocketSet );
FD_SET( hSocket, &readSocketSet );
FD_ZERO( &errSocketSet );
FD_SET( hSocket, &errSocketSet );
iRet = ::select( 0, &readSocketSet, NULL, &errSocketSet, &timeout );
关机后iRet的返回值还是0,即没有错误。
不知各位还有什么好方法?分不够可以再加,加个0都没有关系。
wwwunix
2001-11-06
打赏
举报
回复
在unix下修改内核参数:tcp_keepidle.
修改这个参数会影响所有用到保活分节的程序。
horsehorse
2001-11-06
打赏
举报
回复
听听课也是好的,请问能不能介绍一下UNIX下的设置?
wwwunix
2001-11-06
打赏
举报
回复
1、哦
2、我知道unix下的设置,windows下我不太清楚。:-(
horsehorse
2001-11-06
打赏
举报
回复
感谢木易兄的热心解答!
在MSDN中对select的第一个参数有如下解释:
nfds
[in] Ignored. The nfds parameter is included only for compatibility with Berkeley sockets.
似乎在Windows环境下设为什么值都可以。
另外“保活分节的时间间隔一般为2小时,不过这个时间可以改变”,不知应该如何设置?
wwwunix
2001-11-05
打赏
举报
回复
1、向掉电的一方发送数据时,可以检测出socket无效。
2、使用SO_KEEPALIVE套接口选项,也可以检测出socket无效。
lurenfu
2001-11-05
打赏
举报
回复
int sockfd, opt, len;
sockfd = socket( PF_INET, SOCK_STREAM, 0 );
opt = 0;
len = sizeof(opt);
setsockopt( sockfd, SOL_SOCKET, SO_KEEPALIVE, &opt, (socklen_t *)&len );
然后填充FD_SET的读和异常,用select读,出错异常会返回。
wwwunix
2001-11-05
打赏
举报
回复
设置SO_KEEPALIVE选项,然后用select读,则返回错误。
horsehorse
2001-11-05
打赏
举报
回复
请问如何使用SO_KEEPALIVE套接口选项?能否具体一点?多谢!
多网卡
socket
的bind
问题
多网卡
socket
的bind
问题
异步
Socket
接收数据后缓存处理
问题
异步接收数据都正常,是个定长TLV包,但是接收到后都是直接写入bufflist后再getdata出来处理,发现有时会有掉包情况,以为是线程安全
问题
,后来加入了lock段将bufflist内代码锁住,依然会有掉包现象,导致组包失败,
请教
了一些人,回答仍然是线程安全
问题
,请问是否有更好的处理办法,如有请贴出代码,因为理论我都明白,也不是解包
问题
(这个解包方式只是随便写的简单方式)现需要能实际解决缓存数
c#
socket
编程技术文章汇总
.NET 3.5
Socket
APM C#用
socket
传输类或结构,以及结构和bytes[]互转 一个简易的
Socket
组件,希望与牛人菜鸟们分享交流 C# HttpWebRequest可断点上传,下载文件;
SOCKET
多线程多管道可断点传送大文
Linux下
socket
多人聊天室
前言 由于疫情原因,在家上了一学期的课,本次作业是作为“Linux程序设计”的期末考核而布置的,代替了原本的考试,对于我这种比较喜欢动手的菜鸡来说,很舒服。 一、聊天室的实验内容 本作业实现一个基于Linux的模拟即时通信系统,要求实现以下功能: 1、模拟即时通信系统可以实现多人同时在线聊天功能; 2、在线聊天用户登录本系统需输入用户名和密码; 3、本系统需能够查询历史聊天记录; 4、本系统运行后,需启动一个守护进程,该守护进程记录本系统启动和关闭的时间,每个用户登录和退出时间;(日志) 5、需创建本系统的
Linux下基于TCP的
Socket
编程
一直都觉得linux是一个很高大上的操作系统,对它充满兴趣,但是真心觉得它上手好难,因为是零基础开始学linux,连安装一个ubuntu,就安装了三天,总是出
问题
,但是又没人可以
请教
,就只能自己百度,有的时候明明一个懂的人提点一下,就可以解决的
问题
,所以我就想要不要报一个培训班,正好我认识一个学长他就是做嵌入式的,和他聊了一下,他推荐我去汇文,他说那里真的可以学到东西,我又自己咨询了一下老师,最后决定参加杭州汇文的嵌入式培训。在这里,我们从简单的c语言开始到网络编程再到开发板,一路走来,收获了许多。老师讲解
通信技术
4,358
社区成员
28,927
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章