~~~~~~~~~~RT
解决方案 »
- 牙医真他妈的黑
- CListCtrl使用问题
- 如何模拟服务器向客户端发数据(在线等,马上揭)
- 没人回答我的问题怎么结帖?我可不想信誉分被扣光
- 高手指点怎样解决:cannot convert parameter 1 from 'void (void *,class SoSensor *)' to 'void (__cdecl *)(void *,class SoSensor *)
- 关于用socket实现数据库表中数据上送的完整性和不重复上送的程序实现
- 菜鸟问题,怎样在其他CDlg或CMainFrame中修改主view中的控件的参数?
- 请教
- 急,微软的mscomm控件 和用windows API发送的数据是否可以相互接收
- MSDN 中diblook例子中的问题
- 用FindXXXChangeNotification可以知道某个目录下有文件(夹)变动, 有办法知道是哪个文件(夹)变动了吗???
- Activex控件在IE中,socket功能不能发包
并响应后来的io ,但是我怎么知道哪些数据是哪个io的 需要保存 socket的 指针吗?还有如果我 recv 512k的 大小 对方只发送了40k的数据 就没发送了 这时候 get队列状态的函数会返回吗??
但是 msdn上说为了 合理利用网络 recv 都是尽量接受 大的缓冲
意思就是说服务器端接受到的数据 都放在一个连续的buffer里面 供后面拆包用
然后相应的 socket放在一个链表里面
可能 buffer里面多个数据包 都可能是1个用户发的 这样的话 就是一对多 的关系 那么 我怎么把它们联系起来
stuct{socket s; pvoid p}; 按固定大小接受了数据了数据就放在 p的buffer里面 然后在把每个socket per handle指针放在链表里面
处理接受数据线程遍历链表 和buffer?
接受到数据后 吧实际数据拷贝到一个大于所有包的的buffer里面 ~~然后开另外一个处理..
不知道还有什么好的方法的如果直接在完成端的工作线程组包并处理的话 就不需要这么麻烦 但是接受到的数据 不够一个要处理的数据单元 怎么办?我这里想不通。。我想把关键技术问题想通了在动手 第一次写网络程序 很多不多 请大家都指点~~
并响应后来的io ,但是我怎么知道哪些数据是哪个io的 需要保存 socket的 指针吗?
================================================================================================
In the first place this is a incorrect question.
per Buffer <--> per IOContext <--> per Socket, this is a one-to-one relation between them.
and
How to process data in buffer, it is another story.
at least there are two ways to handle this job(one is circular buffer you mentioned) 还有如果我 recv 512k的 大小 对方只发送了40k的数据 就没发送了 这时候 get队列状态的函数会返回吗??
=============================================================================================
Remember tcp protocol is based on byte-stream.
I suggest you read "TCPIP.Illustrated Volume 1"
before you do IOCP programming.