2012-06-13 24 views
1

我是网络编程的新手。我感兴趣的是可以通过Java服务器和C客户端之间的套接字建立网络连接,并保持连接无限打开? 我想保持连接打开以在客户端之间交换XML数据。是否有可能将套接字打开无限时间

+8

*“保持连接无限打开?”*可悲的是。在短短的几亿年内,地球就会被汽化。 –

+1

不,最终宇宙将结束:-)更实际的一点是,经过一段时间后,连接可能会下降,并且由于网络问题而必须重新建立。 –

+1

也许你的意思是“持久”而不是“无限”? “无限”在Stackoverflow中带出愤世嫉俗的一面。 :P – kevin628

回答

4

理论上可以保持服务器套接字打开无限长的时间;但是,使用客户端套接字是不可能的。主要原因是因为客户端套接字依赖于处理数据的服务器端套接字,并且服务器套接字可能会关闭连接。

尽管可能会无限期地断开连接,但实际方面通常会确保此类套接字不会永远保持打开状态。网络中断,中间路由器配置错误,带宽耗尽,计算能力不足等等,都是为了确保点对点连接充其量只是暂时的。

请注意,服务器端套接字是一个接收连接请求(产生具有自己的返回套接字的连接)的套接字,所以即使在没有连接时也可以打开它。如果您认为套接字是与另一台计算机的开放连接,则需要重新调整思路,让服务器套接字具有任何意义。

+2

不要忘记处理上面指出的令人讨厌的'EarthVaporizedException'和'UniverseHasEndedException'。 –

+1

@LucaGeretti这样的评论很有趣,但你真的只是避免回答这个问题。 Stackoverflow并不令人厌烦,但是包含宇宙热死的答案在非通用时间尺度上并不有用。 –

+0

第一段中描述的问题不局限于客户端套接字。它是对称的。任何一方都可以丢弃连接,任何中间节点也可以。 – EJP

2

没有什么是无限的(在计算中),但只要两个应用程序都在运行,您就可以保持套接字连接处于打开状态。

2

这是比答案更恳求,但作为一个用户,我发现套接字一直在下降。你不能无情地打开它们。 (A)让用户知道连接已经掉线并(B)使其易于重建连接。好的,这涉及到游戏,但我有客户不承认服务器已经关闭,服务器无法识别我是与丢弃连接的人相同的人。

相关问题