免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 39243 | 回复: 21
打印 上一主题 下一主题

怎么建立socket长连接??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-01 18:44 |只看该作者 |倒序浏览
请问各位大虾, socket 编程是怎么建立长连接方试的

论坛徽章:
0
2 [报告]
发表于 2006-03-01 19:12 |只看该作者
怎么没人回?是不是我说得不清楚呀

论坛徽章:
0
3 [报告]
发表于 2006-03-01 19:20 |只看该作者
原先还不清楚长连接是什么意思,刚才查了一下(http://www.chinaunix.net/jh/36/79863.html),才知道不断开的连接就是....
如果是这样,建立连接就不是关键所在了,只是保持连接时间的长短而已。

论坛徽章:
0
4 [报告]
发表于 2006-03-01 19:26 |只看该作者
那长连接与短连接 在编写代码时区别在那??

论坛徽章:
0
5 [报告]
发表于 2006-03-01 19:41 |只看该作者
还是前面所说的,如果我对长短连接的概念理解没错的话,那么
长连接包括多次的读写过程,这期间不关闭连接(用一个循环就可实现);
短连接一次读写就结束(关闭连接),看到的大多数例子应该都可归于短连接。

论坛徽章:
0
6 [报告]
发表于 2006-03-01 20:02 |只看该作者
譬如 HTTP 的 Connection-alive 如果为 close,则 server 收到一个 request 并发送完一个 response 之后就会主动关闭连接,这就是短连接;如果 Connection-alive keep-alive 的话可以在一个 tcp 连接中交换多次对话。是这个定义?那就只是个程序结构设计问题了。

论坛徽章:
0
7 [报告]
发表于 2006-03-01 22:19 |只看该作者
不就是标准的socket函数调用吗

论坛徽章:
0
8 [报告]
发表于 2006-03-01 23:35 |只看该作者
长连接短连接只是一个概念性的问题,只要知道其概念,不是一个特殊的东西:
长连接:系统通讯连接建立后就一直保持。
短连接:只有系统需要相互发消息连接才建立(客户端发起),请求消息得到响应后连接关闭;
通讯实体间使用长连接,一般还需要定义心跳消息,定期发送来检测系统间链路是否异常,每隔一定时间发送一次心跳,如果一定次数没有收到心跳消息,这认为此连接出现问题,需要断开连接重新建立。
具体心跳消息的格式,以及发送间隔,以及多少次没有收到心跳就认为链路异常,以及数据部是否算作心跳消息(有的系统如果接收到数据包则会清除心跳计时器也就相当于系统中的数据包也算作心跳消息);这个需要两端进行协商。比如GSM常用的短消息中心和其他网络实体互连的SMPP协议,要求建立的就是长连接.

所以长短连接只是一个概念问题长短连接的socket,就是使用普通的socket函数,没有什么特殊的。

[ 本帖最后由 hkwang66 于 2006-3-2 00:58 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-03-02 20:00 |只看该作者
用一个while 就能实现!  可是我要想在程序中只有一个调用 accet
多次接收发送应该怎么实现

论坛徽章:
0
10 [报告]
发表于 2006-03-03 00:39 |只看该作者

回复 9楼 atg 的帖子

accept建立一个连接,都有一个文件句柄,这样读或写文件,就行了;
没有什么特殊的地方(可能就是,如果有多个连接需要把文件设置成
无阻赛方式,然后使用select进行轮询)。
(PS:是不是没有写过多个实体通讯的程序?)

[ 本帖最后由 hkwang66 于 2006-3-3 00:56 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP