读书人

关于完成端口的大家帮忙看一上

发布时间: 2014-05-26 16:53:22 作者: rapoo

关于完成端口的,大家帮忙看一下
我刚刚看完 完成端口和线程池的一些文章和视频教程,有些地方不是很理解。
在服务端,我们是先要PostAccept一下,然后再去获取完成端口队列的状态GetQueuedCompletionStatus。有一个 PULONG_PTR lpCompletionKey参数,我传入的是我自己设定的一个结构体,这个结构体里面就有两个SOCKET,我一个是用来监听的套接字,一个是用来接收客户端的套接字。
我这样接收数据了以后,这里面的两个套接字会不会被更改啊?具体这个参数的意义是什么,大神们给个解释,谢谢。
还有我也想用完成端口来写客户端,可是我觉得用完成端口写,没有必要再去CreateThread也不需要去用到线程池,这样有点浪费资源。这样可以吗?是不是完成端口就必须得创建线程,否则就不叫完成端口了。
就这么点分了,大家不要嫌少啊!~

[解决办法]

1..lpCompletionKey 相当于一个关键字.其实就是一个指针地址.它的值只要你不修改他就不会改.
在应用中.通过这个lpCompletionKey 判断是哪个客户端,其实就对应于一个客户端.
这个参数是在你关联完成端口时,传入的. 以后就不能修改这个地址(例如不能释放).但是里面的值 你可以修改.

2.其中lpOverlapped参数,就是相当于一次IO操作,你投一个POST 过去就对应 一次
GetQueuedCompletionStatus返回.


lpCompletionKey = 客户端指针 . lpOverlapped = WSAREAD,WSASEND .LISTEN.

3.对于客户端一般用SELCET就行啦,错误也好查找.

[解决办法]
他给你分,也没法用来下东西。下载积分不是专家分。但是下载分可以用你的可用分去兑换,你还有550可用分呢,可以去换。在个人页“http://bbs.csdn.net/”左下方列表里面 系统功能->资源分兑换

探讨
能给我分嘛.我差分啊.我只有一分啦 .下个东西都下了

读书人网 >VC/MFC

热点推荐