长连接和短连接的问题

abblly 2006-04-04 11:33:19
什么是长连接和短连接?
所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发链路检测包以维持此连接。
短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只完成一对消息的发送。

我的socket是长连接还是短连接是由服务端决定的还是有客户端决定的?是否有一个函数来创建一个长连接或者短连接?(我的意思是有一个参数,表示长连接或者短连接 比如是否有类似的函数createLink(int linkType) 调用的时候linkType为1表示长连接,为0表示短连接)

还有听说长连接要发送心跳消息,是怎么发送的?有库函数可以自动实现这个吗?
还有人说不用发送心跳消息,tcp会自动发送以保证是否连接,只要网络不断就可以了。到底要不要自己发送心跳消息啊,如果要的话,怎么发送阿

最好有例子,谢谢了
...全文
332 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
abblly 2006-04-05
  • 打赏
  • 举报
回复
长连接还是短连接首先是由服务端决定的,如果服务端支持长连接,则可以由客户端决定是长连接还是短连接。

那么服务器是否支持长连接是根据服务器创建socket的时候参数选择的吗?
ringphone 2006-04-05
  • 打赏
  • 举报
回复
那么服务器是否支持长连接是根据服务器创建socket的时候参数选择的吗?
----------------------------------------------------------------
服务器处理完客户端请求,不断开连接,由客户端断,就是长连接,否则就是短连接,是程序行为决定,与创建socket无关。其实就是处理完数据是否调用了closesocket而已。
ringphone 2006-04-05
  • 打赏
  • 举报
回复
长连接还是短连接首先是由服务端决定的,如果服务端支持长连接,则可以由客户端决定是长连接还是短连接。
没有现成的函数来创建一个长连接或者短连接,自己写的话也比较麻烦,因为必须把数据的发送和接收也一起绑定,比如短连接,客户端这个函数就必须实现连接-》发送-》等待数据接收完毕-》自动断开,服务端是接受连接-》接收数据-》等待数据处理完毕-》发送结果-》断开连接。
striking 2006-04-04
  • 打赏
  • 举报
回复
是长连接还是短连接, 一般是客户端决定

发送心跳消息来维持连接的意思是, 如果连接后, 有一段时间没有数据传送, 那么就自己让应用程序发送自己的定义的消息来维持. 相当于你send一段有用的数据, 但服务器判断这条消息只是维护连接用的,就不管了.

我的理解是这样的.

看看楼下的.
gohappy_1999 2006-04-04
  • 打赏
  • 举报
回复
个人认为发心跳包是用来检测连接是否已断开,而不是用来维持连接的。
oyljerry 2006-04-04
  • 打赏
  • 举报
回复
自己通过发送类似心跳包的东西来表明这个连接还在维持中
goodheartppl 2006-04-04
  • 打赏
  • 举报
回复
可以设置过一段时间就自己发送一个 测试信息,

如果一段时间没收到特定的消息就断开

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧