>
01
网站首页
>
02
有本日记
>
03
古城童话
>
04
技术笔记
>
05
相框相册
>
0A
可能是我
>
0B
写张纸条
>
0C
友情链接
京ICP备06059428号
TCP和UDP通讯程序
古城
@ 2007.12.28
分类:
技术笔记
点击:2619
评论:0
忙了两天,把TCP和UDP连接的通讯程序分别做完了。控制台环境下的与TCP连接相关的程序写的也不少了,本以为能很顺手的就能做完的,结果在MFC下做了之后发现一堆以前没遇到的问题:
TCP连接的最简单模型10来行就够了,但根本不能满足聊天程序的基本需要,一般都会涉及到多线程。需要多线程就用多线程吧,控制台下用多线程没遇到大问题,可到了MFC下多线程问题就来了,改了又改也没解决,翻了翻手边的资料发现了原因。原来是因为“不允许在线程之间共享MFC类的对象”(《Visual C++.NET技术内幕(第6版)》P223,11.3.3)。
进一步考虑了一下比较多的客户端连接进服务器的情况。别人的建议是,同时管理数量庞大的套接字,最好最高效的办法是用完成端口来做。写服务器端,同时支持很多用户的话,一般都是采用这种技术。用完成端口,线程数量是固定的,不必为新的连接另外开线程,只要把新的连接的socket传递给完成端口,然后完成端口的线程就会处理了。不过,完成端口是最复杂的I/O模型了,可以参考《windows网路编程技术》这本书的第8章,说的比较精彩。时间关系,只是我查阅了一下这种解决思路,没有在程序里实际做。
TCP连接的遇到的问题多一点,然后做UDP连接的就没遇到问题了。
上一篇:
解读无线网络的七大安全困惑
下一篇:
数据库系统[转]
本文评论
发表评论
你的评论
← 填你的
昵称
← 这里填
↓
以下内容
非必填
,可根据需要填写
← 可以展示在你的评论上方
← 不会在页面展示
← 不会在页面展示
← 只给我看?勾选上
[
提交
]
这是一个别人称之为
角落
的世界
幸而,它的确是我的世界