|
|
导航: |
论坛 -> 网络通讯
斑竹:liumazi,sephil |
|
作者: |
|
2020/12/16 11:21:11 |
标题: |
哪位高手有Delphi的心跳包Demo |
浏览:2205 |
|
加入我的收藏 |
楼主: |
哪位高手有Delphi的心跳包Demo ,请提供,万分感谢!
----------------------------------------------
- |
作者: |
|
2020/12/16 11:59:12 |
1楼: |
int val = 1; if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val)) == -1) { exit(-1); }
----------------------------------------------
--
|
作者: |
|
2020/12/16 15:35:34 |
2楼: |
谢谢bahamut8348 !能不能详细些?如 uses 什么? 定义变量,代码放在什么事件里等.
----------------------------------------------
-
|
作者: |
|
2020/12/16 19:36:33 |
3楼: |
楼主你不能多写几个字?
啥心跳?UDP?TCP?还是其它啥?
用啥控件?ICS,indy......好多种。
万一你说的根本不是网络通讯的心跳,是其它什么心跳呢?
----------------------------------------------
-
|
作者: |
|
2020/12/17 3:11:52 |
4楼: |
谢谢pcplayer,用indy控件,TCP
----------------------------------------------
-
|
作者: |
|
2020/12/17 9:29:45 |
5楼: |
在创建socket句柄之后就可以用setsockopt来设置socket属性了。这个已经很详细了,再要更详细的资料不如自行google。
SO_KEEPALIVE是自带的心跳机制,工作在内核层,效率高,通用性广,但是会被部分路由屏蔽,比如菊花的路由基本都会屏蔽这个包。 再有就是你自己可以在用户层建立自己的心跳包,所谓心跳包就是一个约定好的协议,客户机发送这个特定的包给服务器,通知自己还活着。
----------------------------------------------
--
|
作者: |
|
2020/12/17 10:35:11 |
6楼: |
http://www.360doc.com/content/19/0625/23/46623523_844851107.shtml
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
作者: |
|
2020/12/17 16:25:53 |
7楼: |
用 Indy TCP 的话,如果是长连接,我自己写的程序会自己判断超过5分钟向对方发一个包。
反正你用 TCP,你自己需要定义自己的通讯协议。在自己定义的通讯协议里面,加一个心跳的协议就好了。
所有都在应用层用代码自己处理,其实更方便。
----------------------------------------------
-
|
作者: |
|
2020/12/18 8:48:48 |
8楼: |
谢谢各位高手的指教!
----------------------------------------------
-
|
|