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连接的就没遇到问题了。
 
 
 
 
 

本文评论

 
 

发表评论

你的评论
← 填你的昵称
以下内容非必填,可根据需要填写
← 可以展示在你的评论上方
← 不会在页面展示
← 不会在页面展示
← 只给我看?勾选上
这是一个别人称之为角落的世界
幸而,它的确是我的世界