请教两个很简单的问题

公共马甲0315 2014-04-18 04:43:04
客户端连接服务器,使用的是CAsyncSocket继承的类,怎么知道服务器关闭了连接呢?我是说的正常关闭,有没有什么消息?


还有个小问题,如果我的客户端要求频繁的断开、连上,断开连上,而且要连很多服务器,那么可以使用怎样的函数来实现关闭连接呢?我知道可以使用Create(nPort)创建一个端口,然后connect(),但是并没有disconnect函数,如果使用close(),那么是不是每次还得要重新create一下?不希望反复调用Create()重新创建,因为发现nPort每次create时都要累加,十分麻烦。如果不变,上次那个port没有释放,快速地连接、断开、连接、断开时就会创建失败。求指点下!
希望客户端能够做到像网络调试助手那样能够快速断开、连上、断开、连上。
...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小马喝水 2014-04-21
  • 打赏
  • 举报
回复
引用 3 楼 newTTTTTT 的回复:
[quote=引用 1 楼 zhaoze87 的回复:] 1、服务器正常关闭,CAsyncSocket::OnClose方法应该会被回调,通知客户端连接关闭 2、作为客户端连接服务器的话,Create的port参数应该可以默认传0
感谢高手回复,但你这个说的是PC机哈。 能否再请教下,如果服务器不是电脑,而是手机、平板或者是单片机系统的话,还会有这样的通知吗?只知道可以用socket去连。[/quote] 如果这个类支持移动平台的话,也会有通知
公共马甲0315 2014-04-19
  • 打赏
  • 举报
回复
引用 2 楼 VisualEleven 的回复:
1. 如果是服务器是正常关闭的话,那么你的客户端应该是可以知道的,比如调用recv会返回0 2. 端口复用?setsockopt(..., SO_REUSEADDR...); ???
主要是不想频繁地关闭和调用create。但是很希望能够断开。请问如果某个socket连接已经终止了,我不调用close(),而是直接用它connet(新ip地址),那会不会有内存没释放之类的呢?
公共马甲0315 2014-04-19
  • 打赏
  • 举报
回复
引用 1 楼 zhaoze87 的回复:
1、服务器正常关闭,CAsyncSocket::OnClose方法应该会被回调,通知客户端连接关闭 2、作为客户端连接服务器的话,Create的port参数应该可以默认传0
感谢高手回复,但你这个说的是PC机哈。 能否再请教下,如果服务器不是电脑,而是手机、平板或者是单片机系统的话,还会有这样的通知吗?只知道可以用socket去连。
Eleven 2014-04-18
  • 打赏
  • 举报
回复
1. 如果是服务器是正常关闭的话,那么你的客户端应该是可以知道的,比如调用recv会返回0 2. 端口复用?setsockopt(..., SO_REUSEADDR...); ???
小马喝水 2014-04-18
  • 打赏
  • 举报
回复
1、服务器正常关闭,CAsyncSocket::OnClose方法应该会被回调,通知客户端连接关闭 2、作为客户端连接服务器的话,Create的port参数应该可以默认传0

18,356

社区成员

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

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