高分求助:小弟对不知道该如何使用“完成端口”,请不吝赐教!

tianxiangyuan 2003-11-12 10:14:44
最近刚听说Windows竟然有这样的“秘密武器”,但是小弟不甚了解。哪位大虾有它的详细资料,请不吝赐教!
...全文
60 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sczyyang 2003-12-25
  • 打赏
  • 举报
回复
我觉得windows网络编程这本书非常好,尤其是第八章。中文版翻译得很差,看原版吧,人家写得很清楚。翻译太差了。
warton 2003-12-18
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2563/2563448.xml?temp=.3551905
tgame 2003-12-17
  • 打赏
  • 举报
回复
我来说说吧,
WSASend,WSARecv,AcceptEx这些操作都可以做为重叠操作,调用了这些函数以后,如果他们相关的socket已经加入了完成端口,那么在完成之后完成端口那里就把这些消息加入了消息队列,就等你用GetQueuedCompletionStatus去提取了。实际上就是一句话:提前下命令,接下来就是等完成。
比如说你建了个SOCKET m_ListenSocket=WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED);
加入完成端口
CreateIoCompletionPort((HANDLE)m_ListenSocket,m_hIOCP,NULL,m_nWorkThreadNum);
棒定,listen()。
提前调用AcceptEx,如果有连接连进来,系统就是帮你把连接建立,然后完成端口的消息队列就有消息了。WSARecv也是一样,要提前调用读取(就算当时没有数据可读),数据一收到,系统就帮你读,读完就通知你。
这些弄懂了,再看
http://www.csdn.net/develop/article/15/15211.shtm就很容易了
主要难点那就难了:起码多线程就是很烦的事,特别是要稳定。
下面就是转的了:
开发大响应规模的Winsock服务器并不是很可怕,其实也就是设置一个监听套接字
、接受连接请求和进行重叠收发调用。通过设置合理的进行守候的重叠调用的数
量,防止出现未分页内存池被耗尽,这才是最主要的挑战。按照我们前面讨论的
一些原则,你就可以开发出大响应规模的服务器应用程序。
tianxiangyuan 2003-12-17
  • 打赏
  • 举报
回复
既然有那么多的人已经研究清楚了,为什么没有人肯将自己的心得体会写出来呢?例如,可以说说完成端口的机制,优点,使用时的难点,等等。
sevencat 2003-12-17
  • 打赏
  • 举报
回复
个人认为,假如是客户之间交流不是很多,广播包不太多的话用完成端口确实蛮好的。

否则可能涉及到大量的LOCK的问题。


windows网络编程 <--------这本书简直是垃圾,例子也编译部通过,七十几个错
说这本书是垃圾也情有可原,这本书作为入门书尚可。但里面的例子都是极其简单的例子。不过你编译不通过,那是你自己水平问题。


心得和体会:
1、套接字类是要引用计数的,要分主动关闭和被动关闭。
2、发送接收包也要引用计数的。
3、要写线程池类。
我觉得可能主要就这三大块吧。
gofree2 2003-12-17
  • 打赏
  • 举报
回复
我研究了2天,差不多就清楚了 ;)
starcbh 2003-12-16
  • 打赏
  • 举报
回复
很清楚了,post一个请求(请求里带着用户自定的信息),那边几个工作线程那里取得请求的结果,处理,就这样了。

……windows网络编程讲得倒是有点不清不楚的
windows_editor 2003-12-16
  • 打赏
  • 举报
回复
晕 第一次听说windows网络编程是垃圾 我可是开了眼界了
大脚板 2003-12-16
  • 打赏
  • 举报
回复
唉,连windows网络编程都被说成垃圾,

如果看过 Win32多线程程序设计和windows网络编程还看不懂的话

建议还是转行吧
大脚板 2003-12-16
  • 打赏
  • 举报
回复
windows网络编程里的方法更好些,将操作符加在overlapped里
  • 打赏
  • 举报
回复
二个星期.晕,我可是看了一个月!!免强是看明白了!
Fly1980 2003-12-11
  • 打赏
  • 举报
回复
可以编译得过的.
..
你是垃圾.
nonocast 2003-12-11
  • 打赏
  • 举报
回复
研究IOCP两个星期了
概念感觉不较清晰了
但还是感到力不从心

主要参考书目:
Advanced Windows
基于服务器的应用程序技术内幕
Win32多线程程序设计
windows网络编程 <--------这本书简直是垃圾,例子也编译部通过,七十几个错

主要参考网站:
www.codeproject.com
www.cesdn.com
www.msdn.net

IOCP主要用于服务器端
只要是大型的设计都采用IOCP
这一点毋庸置疑
我现在急于多看一些实际简洁的例子
希望楼主如果有的话
也可以通知我一声

May you succeed!
tianxiangyuan 2003-12-11
  • 打赏
  • 举报
回复
为什么人气不旺?没有人知道吗?
自己顶。
大脚板 2003-11-12
  • 打赏
  • 举报
回复
win32多线程程序设计,和windows网络编程都说的比较详细
netsys2 2003-11-12
  • 打赏
  • 举报
回复
这里有详细介绍:

http://www.csdn.net/develop/article/15/15211.shtm

多学习,好东西啊!
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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