社区
网络编程
帖子详情
IOCP 同时投递的问题?
骑着蜗牛追乌龟
2012-08-25 04:52:01
这个同时是这样的,
监听线程接到一个连接之后,
先在这个套接字上投递了一个wsarecv,然后投递了一个wsasend,
这两个投递对应的是两个不同的overlapped结构体,
工作线程中通过GetQueuedCompletionStatus函数得知wsasend投递的数据全部传输完了。
在客户端我也接到了对应字节的数据,但是全部为0,
请问大家这是怎么回事,可能是怎么回事。
...全文
95
3
打赏
收藏
IOCP 同时投递的问题?
这个同时是这样的, 监听线程接到一个连接之后, 先在这个套接字上投递了一个wsarecv,然后投递了一个wsasend, 这两个投递对应的是两个不同的overlapped结构体, 工作线程中通过GetQueuedCompletionStatus函数得知wsasend投递的数据全部传输完了。 在客户端我也接到了对应字节的数据,但是全部为0, 请问大家这是怎么回事,可能是怎么回事。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
骑着蜗牛追乌龟
2012-08-25
打赏
举报
回复
谢谢楼上两位哥,问题解决了,是给一个变量赋值的时候出了点问题,谢谢大家了。
明天结贴!
smwhotjay
2012-08-25
打赏
举报
回复
在客户端我也接到了对应字节的数据,但是全部为0,
什么意思? 收到了数据?全部为0 ? 哪里的0?
Eleven
2012-08-25
打赏
举报
回复
在客户端我也接到了对应字节的数据,但是全部为0,
--------------------------------------
你要先确定是你发送端的问题(数据本身就不对)还是接收端的问题(接收解析的问题)。
确保一点,重叠结构在发送或者接收的过程中不能被破坏。(即不会被释放)
IOC
P模型总结
IOC
P模型总结
IOC
P模型总结
IOC
P模型总结
IOC
P模型总结
IOC
P模型总结
IOC
P模型总结
IOC
P模型总结
IOC
P模型总结
IOC
P原理及关键
问题
集(史上最全的
IOC
P资料大全).rar
注:更多资料请根据压缩文件中的《更多资料.txt》文件的介绍免费获取 =====★★★★史上最全的
IOC
P资料大全★★★★============== 目的:研究和分享基于
IOC
P通讯模型的服务器端及即时通讯客户端相关技术 语言:Delphi\C++ 欢迎给位朋友加入 -------------------------前言------------------------ 最近在编写即时通讯工具,于是便参考和搜罗了网上大量的文章和源码, 对
IOC
P涉及的相关技术进行了广泛和深入的研究。
IOC
P涉及的关键知识点有很多很多,这方面的文章也非常多, 但是很多讲述的都是某方面的,为了帮大家甄选资料,我决定分享给大家。 以下是我搜集的部分
IOC
P相关的资料目录,有需要的请加我QQ和QQ群,无偿分享: --------------------------
IOC
P部分相关知识点------------------ 线程池,Socket连接池、数据库连接池、内存池及内存管理 防DDos攻击、防只连接不发送消息及Setsockopt相关设置 WSAENOBUFS及0缓冲的WSARecive
投递
优雅的链接关闭方法及shutdown、TIME_WAIT 及注册表设置:TcpNumConnections/MaxUserPort 多核多线程、生产消费者模型、读写者模型、多线程无锁环形队列及LockFreeList概念 Socket重用、端口重用 心跳、粘包、乱序 ------------------------我收集的文章及源码的部分目录---------------------- ------------------------供大家搜索资料时参考----------------------------------
可伸缩的服务器(
ioc
p)
简单的带数据头的发送信息 1.伸缩性I/O模型
IOC
P 动态
投递
套接字I/O请求 2.对非SOCKET类型数据处理 3. 释放
IOC
P_INFO对象的工作都在workThread中执行,只要关闭socket就行 4.固定死了二个处理工作线程,这是缺点 改成与CPU个数有关的话,又和WaitForMultipleObjects冲突,不知道如何处理这个数组 5.如何接收新用户连接? 接收了连接后就要
投递
更足够的AcceptEx操作,当用完一个就再增加投入,这样可以无限制的接收用户。 实现万人在线接收。 6.防止用户仅发送数据而不接收,导致服务器抛出大量发送操作 跟踪
投递
的发送的数量 每个struct
IOC
P_INFO中都有int nOutstandingSend;来保存发送的数量. 当
投递
一个发送后,nOutstandingSend++ 当发送完成后,nOutstandingSend-- 这样有效的防止了,一个用户占用了服务器的通信 其中用到了CriticalSection来保护结构数据 7.printf发生混乱 在两个workThread线程里用printf会出现混乱,明明只printf一下,应该是输出二次,但有时会发生输出三次 8. // 向新连接
投递
几个Read请求,这些空间在套节字关闭或出错时释放 for(int i=0; i<5; i++) { C
IOC
PBuffer *p = AllocateBuffer(BUFFER_SIZE); if(p != NULL) { if(!PostRecv(pClient, p)) { CloseAConnection(pClient); break; } } }
C#
IOC
P完成端口模型(简单实用高效)
最近有项目要做一个高性能网络服务器,去网络上搜到到的都是C++版本而且是英文或者简单的DEMO,所以自己动手写了C# 的DEMO。 网络上只写接收到的数据,没有说怎么处理缓冲区数据,本DEMO简单的介绍如何处理接收到的数据。简单易用,希望对大家有用. 1、在C#中,不用去面对完成端口的操作系统内核对象,Microsoft已经为我们提供了SocketAsyncEventArgs类,它封装了
IOC
P的使用。请参考:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1。 2、我的SocketAsyncEventArgsPool类使用List对象来存储对客户端来通信的SocketAsyncEventArgs对象,它相当于直接使用内核对象时的
IoC
ontext。我这样设计比用堆栈来实现的好处理是,我可以在SocketAsyncEventArgsPool池中找到任何一个与服务器连接的客户,主动向它发信息。而用堆栈来实现的话,要主动给客户发信息,则还要设计一个结构来存储已连接上服务器的客户。 3、对每一个客户端不管还发送还是接收,我使用同一个SocketAsyncEventArgs对象,对每一个客户端来说,通信是同步进行的,也就是说服务器高度保证同一个客户连接上要么在
投递
发送请求,并等待;或者是在
投递
接收请求,等待中。本例只做echo服务器,还未考虑由服务器主动向客户发送信息。 4、SocketAsyncEventArgs的UserToken被直接设定为被接受的客户端Socket。 5、没有使用BufferManager 类,因为我在初始化时给每一个SocketAsyncEventArgsPool中的对象分配一个缓冲区,发送时使用Arrary.Copy来进行字符拷贝,不去改变缓冲区的位置,只改变使用的长度,因此在下次
投递
接收请求时恢复缓冲区长度就可以了!如果要主动给客户发信息的话,可以new一个SocketAsyncEventArgs对象,或者在初始化中建立几个来专门用于主动发送信息,因为这种需求一般是进行信息群发,建立一个对象可以用于很多次信息发送,总体来看,这种花销不大,还减去了字符拷贝和消耗。 6、测试结果:(在我的笔记本上时行的,我的本本是T420 I7 8G内存) 100客户 100,000(十万次)不间断的发送接收数据(发送和接收之间没有Sleep,就一个一循环,不断的发送与接收) 耗时3004.6325 秒完成 总共 10,000,000 一千万次访问 平均每分完成 199,691.6 次发送与接收 平均每秒完成 3,328.2 次发送与接收 整个运行过程中,内存消耗在开始两三分种后就保持稳定不再增涨。 看了一下对每个客户端的延迟最多不超过2秒。
易语言
IOC
P线程池模块
易语言
IOC
P线程池模块源码,
IOC
P线程池模块,读整数,写整数,Call,工作线程,线程池_创建,线程池_销毁,线程池_发送信息,线程池_
投递
信息,Create
IoC
ompletionPort,GetQueuedCompletionStatus,PostQueuedCompletionStatus,CreateThread,CloseHandle,GetExitCodeThre
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章