socket客户端如何知道自己是否连接到服务器?

zl_120 2017-09-06 11:21:47
服务器每监听到一个客户端的连接请求,就从线程池中取一个线程来处理客户端的连接请求,当客户端的连接请求数量达到服务器线程池能处理的上线,客户端如何知道自己是否连接到了服务端,或者说服务端是否有线程来处理该客户端的链接请求?
...全文
2927 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤独的海啊 2018-10-12
  • 打赏
  • 举报
回复
客户端肯定能连接上 ,但是不一定会得到服务器的服务。应该这样理解。 那客户端应该在连接上一段时间之后没有收到服务器的响应就断开链接。服务器端如果发现没有线程处理这个连接也应该主动断开连接。
Lucay丶 2018-09-13
  • 打赏
  • 举报
回复
引用 5 楼 chb345536638 的回复:
你要追求一个妹子,然后跟对方表白让她做你女朋友,但对方没有理你,算连接上了吗


但是人家妹子确实收到表白了哦,算是连上了,


只是服务器并没有应答,
客户端应该发送心跳包,服务器每次收到心跳包要返回一个success这种的应答,来表示我收到了,
客户端和服务端如果超过一段时间都没有互相收到通知或者答复
就应该关闭socket连接
bluk44444 2018-01-29
  • 打赏
  • 举报
回复
首先服务端如果10个连接就达到了上限,那么服务端至少有11个线程吧。1个主线程,10个分线程。 所有的客户端请求应该都是先请求主线程吧,然后主线程来看是否能够分配。 其次,客户端连接服务端的时候,如果过一会连接不上,它自然知道连接失败了啊。
  • 打赏
  • 举报
回复
只应该关心服务器端多长时间相应自己的一次请求 --> 只应该关心服务器端多长响应相应自己的一次请求 所有的指标都是随时变动的。设计软件应该用不懂编程的人都懂的一些道理来作为根本依据,不要纠结来纠结去地搞太技术化的研究。
  • 打赏
  • 举报
回复
客户端只应该关心服务器端多长时间相应自己的一次请求,关心什么“多少个线程”干什么?客户端可以并行地测试10个服务器,然后选择一个应答最快的服务器作为继续连接的服务器,其它9个就关闭连接就行了。 真正懂技术的人其实不会过分技术化。过分技术化,其实不是真的技术。这是我的忠告。
zl_120 2017-09-07
  • 打赏
  • 举报
回复
服务器每监听到一个客户端的连接请求,就从线程池中取一个线程来处理客户端的连接请求,当客户端的连接请求数量达到服务器线程池能处理的上线,客户端如何知道自己是否连接到了服务端,或者说服务端是否有线程来处理该客户端的链接请求? 服务端ServerSocket的accept有监听到客户端的链接请求,但是线程池里已经没有足够的线程来处理该客户端的链接请求,这样该客户端就不算连接上服务端吧,但是客户端又没有报错,因为服务端已经监听到了它的连接请求 当服务端中有客户端下线,该客户端的链接请求就会被处理
  • 打赏
  • 举报
回复
你要追求一个妹子,然后跟对方表白让她做你女朋友,但对方没有理你,算连接上了吗
zl_120 2017-09-07
  • 打赏
  • 举报
回复
服务端ServerSocket的accept有监听到客户端的链接请求,但是线程池里已经没有足够的线程来处理该客户端的链接请求,这样该客户端就不算连接上服务端吧,但是客户端又没有报错,因为服务端已经监听到了它的连接请求
by_封爱 2017-09-07
  • 打赏
  • 举报
回复
connection报错就连不上了被 ....
1、本课程是一个干货课程,主要讲解如何封装服务器底层,使用Tcp/ip长连接,IDE使用vs2019 c++开发以及使用c++11的一些标准,跨平台windows和linux,服务器性能高效,单服务器压力测试上万无压力,服务器框架是经历过上线产品的验证,框架简单明了,不熟悉底层封装的人,半个小时就能完全掌握服务器框架上手写业务逻辑。2、本课程是一个底层服务器框架教程,主要是教会学员在windows或linux下如何封装一个高效的,避免踩坑的商业级框架,服务器底层使用初始化即开辟内存的技术,使用内存池,服务器运行期间内存不会溢出,非常稳定,同时服务器使用自定义哈希hashContainer,在处理新的连接,新的数据,新的封包,以及解包,发包,粘包的过程,哈希容器性能非常高效,增、删、查、改永远不会随着连接人数的上升而降低性能,增、删、查、改的复杂度永远都是恒定的O(1)。3、服务器底层封装没有使用任何第三方网络库以及任何第三方插件,自由度非常的高,出了任何BUG,你都有办法去修改,查找问题也非常方便,在windows下使用iocp,linux下使用epoll.4、讲解c++纯客户端,主要用于服务器之间通信,也就是说你想搭建多层结构的服务器服务器服务器之间使用socket通信。还可以使用c++客户端做压力测试,开辟多线程连接服务器,教程提供了压力测试,学员可以自己做压力测试服务器性能。5、赠送ue4和unity3d通信底层框架以及多人交互demo,登录,注册,玩家离开,同步主要是教会学员服务器客户端如何交互。6、赠送c++连接mysql数据库框架demo,登录,注册,玩家离开数据持久化.7、服务器教程使用自定义通信协议,同时也支持protobuf,选择权在开发者自己手里,想用什么协议都可以,自由度高。8、服务器教程使用手动敲代码逐句讲解的方式开展教学课程。非喜勿喷,谢谢大家。9、服务器教程提供源码,大家可以在平台提供的地址下载或者联系我,服务器使用c++11部分标准,std::thread,条件变量,线程锁,智能指针等,需要学员具备一定c++知识,购买前请慎重考虑。

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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