社区
网络编程
帖子详情
如何在socket发送完成后立即关闭socket?
BaoBrother
2009-10-06 04:13:12
如题,如果不等待发送完成直接执行close关闭socket的话,客户端收不到信息。
...全文
129
9
打赏
收藏
如何在socket发送完成后立即关闭socket?
如题,如果不等待发送完成直接执行close关闭socket的话,客户端收不到信息。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
野男孩
2009-10-07
打赏
举报
回复
顶lz自力更生。何不把解决办法贴出来~
zhaohongbo83
2009-10-07
打赏
举报
回复
恭喜!
angeryi
2009-10-07
打赏
举报
回复
呵呵,来打个酱油
jamseyang
2009-10-07
打赏
举报
回复
仔细检查下再发帖呀,浪费银子呀,哈哈
Conry
2009-10-06
打赏
举报
回复
既然解决了
lz结贴吧
我辣椒哥
2009-10-06
打赏
举报
回复
socket sock = INVALID_SOCKET;
判断一下
if(sock == INVALID_SOCCKET)
{
closesocket(sock);
}
O(∩_∩)O
lizhihui945
2009-10-06
打赏
举报
回复
呵呵
delphiwcdj
2009-10-06
打赏
举报
回复
^_^
BaoBrother
2009-10-06
打赏
举报
回复
自己解决了,自身程序的问题。
功能强大的IOCP
Socket
Servre模块例程源码
完成
端口通讯服务器(IOCP
Socket
Server)设计 (六)功能强大的IOCP
Socket
Servre模块例程源码 Copyright © 2009 代码客(卢益贵)版权所有 QQ:48092788 源码博客:http://blog.csdn.net/guestcode 一、声明 版权声明: 1、通讯模块代码版权归作者所有; 2、未经许可不得全部或部分用于任何项目开发; 3、未经许可不得部分修改后再利用源码。 免责声明: 1、 由于设计缺陷或其它Bug造成的后果,作者不承担责任; 2、未经许可的使用作者不提供任何技术支持服务。 权利和义务: 1、任何获得源码并发现Bug的个人或单位均有义务向作者反映; 2、作者保留追究侵权者法律责任的权利。 二、开发背景 部分代码由前项目分离而来,尚未有应用考验,但对于初学者学习和进阶有很大帮助。性能上尚未有定论,但应该不会令你失望。 三、功能说明 1、可以
关闭
Socket
的Buffer; 2、可以
关闭
MTU(不等待MTU满才
发送
); 3、可以多IP或多端口监听; 4、可以重用
socket
(主动
关闭
除外); 5、可以0缓冲接收(
Socket
的Buffe = 0时,避免过多的锁定内存页); 6、可以0缓冲连接(客户端仅连接,不一定
立即
发数据); 7、可以条件编译: a、是否使用内核Singly-linked lists; b、是否使用处理线程(工作线程和处理线程分开); c、是否使用内核锁来同步链表。 8、可以实现集群服务器模式的通讯(有客户端
socket
); 9、可以单独设置每个连接的Data项来实现连接和Usernfo的关联; 10、每个线程有OnBegin和OnEnd,用于设置线程独立的对象(数据库会话对象); 11、可以提供详细的运行情况,便于了解IOCP下的机制,以及进行调试分析; 12、可以发起巨量连接和数据(需要硬件配置来支持)。
Socket
发完消息后,
立即
关闭
连接,客户端丢失数据的问题
使用.net编写服务器程序的时候,发现一个现象:如果服务器发完消息,
立即
关闭
连接,客户端将无法收到服务器最后发的那条消息。个人猜想,会不会
socket
也有象文件流类似的缓存机制。果断利用visual studio的智能提示功能,列出
socket
类型的全部属性,果然发现一个叫NoDelay的属性。 MSDN对该属性的说明如下: 获取或设置 Boolean值,该值指定流
Socket
是...
socket
--强制
关闭
与优雅
关闭
概念 优雅
关闭
:如果
发送
缓存中还有数据未发出则其发出去,并且收到所有数据的ACK之后,
发送
FIN包,开始
关闭
过程。 强制
关闭
:如果缓存中还有数据,则这些数据都将被丢弃,然后
发送
RST包,直接重置TCP连接。 半
关闭
--shutdown 函数原型: int shutdown( int s, //
socket
fd int how // SHUT_RD,SHUT_WR,SHUT_RDWR ); 该函数用于
关闭
TCP连接,单并不
关闭
socket
句柄。其第二个参数可以
执行
socket
的write方法之后,立刻close连接,对方是否能成功收到数据呢?
最近在看 《linux多线程服务端编程:使用moduo C++网络库》一书中,看到一段话 “如果要主动
关闭
连接,如何保证对方已经收到全部数据?如果应用层有缓冲(这在非阻塞网络编程中是必需的,见下文),那么如何保证先
发送
完缓冲区中的数据,然后再断开连接?直接调用close(2)恐怕是不行的。” 摘录来自: 陈硕. “Linux多线程服务端编程:使用muduo C++网络库。” 往
socket
连接中write数据,其实先到write buffer之中的,如果是非堵塞IO write操作会立刻返回,此.
RST及java
socket
关闭
后读写的各种异常
方法
关闭
了
Socket
,虽然TCP规定半
关闭
状态下B仍然可以接收数据,但close动作
关闭
了该
socket
上的任何数据操作,如果此时A继续write,B将返回RST,A的该次write无法
立即
通知应用层(因为write仅把数据写入
发送
缓冲区),只会把状态保存在tcp协议栈内,下次write时才会抛出。都
关闭
,已经排队等待
发送
的数据会被尝试
发送
,最后(默认)
发送
FIN。,它会
发送
FIN但依然可以读取数据;后,无论是
发送
FIN/RST
关闭
的,之后再读写均会抛。
发送
FIN,4次挥手,连接
关闭
,一切都很和谐。
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章