TCP连接 客户端断开后,服务器端任能不断收到客户端最后一次发送的数据?

onion____ 2011-07-02 05:22:23
服务器与客户端都用select模型,客户端成功发送一次数据并且服务器成功接收 后,客户端断开连接 (closesocket()或者强行断开)服务器基本上都会不断收到客户端最后一次发送的数据? (select read一直为true) 这是为什么? 怎样处理这种情况使其能刷新接收缓冲区 使select结果为假
...全文
779 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoForSky 2011-07-04
  • 打赏
  • 举报
回复

贴代码!!!
yaozhiyong110 2011-07-03
  • 打赏
  • 举报
回复
不可能事件 自己的逻辑有问题...
onion____ 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zzz3265 的回复:]

select 返回的是int,
出错返回-1, 也是true, 确定下到底返回什么
[/Quote]

是正数 上面打错了
onion____ 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zzz3265 的回复:]

select 返回的是int,
出错返回-1, 也是true, 确定下到底返回什么
[/Quote]
是整数 不是-1
Yofoo 2011-07-03
  • 打赏
  • 举报
回复
select 返回的是int,
出错返回-1, 也是true, 确定下到底返回什么
onion____ 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zzz3265 的回复:]

服务器基本上都会不断收到客户端最后一次发送的数据

没看明白, 是服务器收到多个数据? (这是你代码逻辑问题)

是服务器无法收到最后的数据?
这可能是客户端过早关闭, 导致客户端的数据没发送完成, 具体的可以看msdn的 closesocket 后面的备注

This is called a hard or abortive close, because the socket's……
[/Quote]

比如 CLient 最后一次发送内容 “ Hello ”
Server收到 显示 Hello

Client 关闭
Server Recv方法不断收到 Hello 接收完一次 再次Recv又收到 Hello

Yofoo 2011-07-02
  • 打赏
  • 举报
回复
服务器基本上都会不断收到客户端最后一次发送的数据

没看明白, 是服务器收到多个数据? (这是你代码逻辑问题)

是服务器无法收到最后的数据?
这可能是客户端过早关闭, 导致客户端的数据没发送完成, 具体的可以看msdn的 closesocket 后面的备注

This is called a hard or abortive close, because the socket's virtual circuit is reset immediately, and any unsent data is lost. Any recv call on the remote side of the circuit will fail with WSAECONNRESET.
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++知识,购买前请慎重考虑。

18,356

社区成员

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

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