我要做的是客户端,客户端每隔30秒给服务器发送一次消息,我现在每次发完消息后就关闭客户端的Socket,有什么方法可以让客户端一直连着吗,TcpClient不关闭就可以了吗?如果TcpClient不关闭,下次再发消息到服务器端是,服务器端还是由原来的线程处理吗。
13 个解决方案
#1
Socket的长连接问题的解决
http://blog.163.com/zhu_xude/blog/static/116769216200962965349372/
http://blog.163.com/zhu_xude/blog/static/116769216200962965349372/
#2
帮顶下.....
#3
当然可以不关闭,你自己去试验。
我想你也还不知道为什么要关闭连接(既为什么要短连接)。所以此时也没有什么可跟你说的,因为你不做测试,或者说你的应用本来就是自己玩,所以很很难谈到产品设计需要什么通信架构问题。
例如你做一个类似迅雷那样的客户端软件,连接你的服务器(哪怕只是取得其它客户端的位置信息这个简单的操作),客户端上可能有不只是迅雷软件、还包括其它软件都需要访问同一个服务器,客户端可能随时发起几十个连接并发地访问服务器不同服务。客户端可以从全世界任何地点访问服务器。你搞清楚你的产品需要什么架构了吗?
我想你也还不知道为什么要关闭连接(既为什么要短连接)。所以此时也没有什么可跟你说的,因为你不做测试,或者说你的应用本来就是自己玩,所以很很难谈到产品设计需要什么通信架构问题。
例如你做一个类似迅雷那样的客户端软件,连接你的服务器(哪怕只是取得其它客户端的位置信息这个简单的操作),客户端上可能有不只是迅雷软件、还包括其它软件都需要访问同一个服务器,客户端可能随时发起几十个连接并发地访问服务器不同服务。客户端可以从全世界任何地点访问服务器。你搞清楚你的产品需要什么架构了吗?
#4
长连接主要适合的是电信级、服务器和服务器之间的通信,适合无之流的大江大河式的,而不适合海纳百川那样的网络需求。
#5
你的服务器回复信息吗?回复完信息继续读、然后继续回复信息不就得了,还用得着去担心什么“原来的”线程吗?
#6
这个我们公司的一个网站项目,是一个为店家提供在线预定服务,商家登陆后,每隔30秒项服务器发一次消息询问有无新订单,服务器返回相应的消息。
我是第一次做通讯,所以一点头绪都没有,能给个例子吗
#7
因为项目要求 服务器端要验证用户信息,在第一次登陆成功后,服务器线程就线程就会添加一个标志提示是登陆用户,直到客户端发消息提示用户推出,服务器将杀掉这个线程。
如果服务器端不是同一个线程,那么每次发消息都要对用户信息进行验证,这样开销很大
#8
自己顶.........
#9
还是30秒连接一次服务器好........不要一直保持着连接,保持长连接会因为网络原因或者连接数过多而自动断开的...
#10
当你连接上后,就不用管它是什么连接
在你需要数据的时候,可以检查一下连接的状态
相信你应该知道怎么做了吧!
在你需要数据的时候,可以检查一下连接的状态
相信你应该知道怎么做了吧!
#11
但是我们的项目组长不同意,服务器端是请人使用Java不会再改动了,只能在客户去实现。
#12
发送信息后不关闭连接,这个应该可以做的到的
#13
我自己做了简单的测试程序,是可以实现。但是服务器端是没有使用多线程。所以有些效果还是测不了。
#1
Socket的长连接问题的解决
http://blog.163.com/zhu_xude/blog/static/116769216200962965349372/
http://blog.163.com/zhu_xude/blog/static/116769216200962965349372/
#2
帮顶下.....
#3
当然可以不关闭,你自己去试验。
我想你也还不知道为什么要关闭连接(既为什么要短连接)。所以此时也没有什么可跟你说的,因为你不做测试,或者说你的应用本来就是自己玩,所以很很难谈到产品设计需要什么通信架构问题。
例如你做一个类似迅雷那样的客户端软件,连接你的服务器(哪怕只是取得其它客户端的位置信息这个简单的操作),客户端上可能有不只是迅雷软件、还包括其它软件都需要访问同一个服务器,客户端可能随时发起几十个连接并发地访问服务器不同服务。客户端可以从全世界任何地点访问服务器。你搞清楚你的产品需要什么架构了吗?
我想你也还不知道为什么要关闭连接(既为什么要短连接)。所以此时也没有什么可跟你说的,因为你不做测试,或者说你的应用本来就是自己玩,所以很很难谈到产品设计需要什么通信架构问题。
例如你做一个类似迅雷那样的客户端软件,连接你的服务器(哪怕只是取得其它客户端的位置信息这个简单的操作),客户端上可能有不只是迅雷软件、还包括其它软件都需要访问同一个服务器,客户端可能随时发起几十个连接并发地访问服务器不同服务。客户端可以从全世界任何地点访问服务器。你搞清楚你的产品需要什么架构了吗?
#4
长连接主要适合的是电信级、服务器和服务器之间的通信,适合无之流的大江大河式的,而不适合海纳百川那样的网络需求。
#5
你的服务器回复信息吗?回复完信息继续读、然后继续回复信息不就得了,还用得着去担心什么“原来的”线程吗?
#6
这个我们公司的一个网站项目,是一个为店家提供在线预定服务,商家登陆后,每隔30秒项服务器发一次消息询问有无新订单,服务器返回相应的消息。
我是第一次做通讯,所以一点头绪都没有,能给个例子吗
#7
因为项目要求 服务器端要验证用户信息,在第一次登陆成功后,服务器线程就线程就会添加一个标志提示是登陆用户,直到客户端发消息提示用户推出,服务器将杀掉这个线程。
如果服务器端不是同一个线程,那么每次发消息都要对用户信息进行验证,这样开销很大
#8
自己顶.........
#9
还是30秒连接一次服务器好........不要一直保持着连接,保持长连接会因为网络原因或者连接数过多而自动断开的...
#10
当你连接上后,就不用管它是什么连接
在你需要数据的时候,可以检查一下连接的状态
相信你应该知道怎么做了吧!
在你需要数据的时候,可以检查一下连接的状态
相信你应该知道怎么做了吧!
#11
但是我们的项目组长不同意,服务器端是请人使用Java不会再改动了,只能在客户去实现。
#12
发送信息后不关闭连接,这个应该可以做的到的
#13
我自己做了简单的测试程序,是可以实现。但是服务器端是没有使用多线程。所以有些效果还是测不了。