没有合适的资源?快使用搜索试试~ 我知道了~
Windows.SOCKET编程.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 75 浏览量
2021-10-03
10:07:59
上传
评论
收藏 63KB DOC 举报
温馨提示
试读
14页
Windows.SOCKET编程.doc
资源推荐
资源详情
资源评论
- .
编程
第一章 序言
我写这个专题的目的,一方面是为了通过对网络编程再一次系统的总结,提高自己的
网络编程水平,特别是 下的网络编程水平。同时,我也希望,能为众多初学网
络编程的人提供一点帮助,因为我开场学习网络编程的时候,能找到的资料就很少。当然
花钱可以买到翻译版本的书:〕
首 先 向 大 家 推 荐 一 本 很 好 的 参 考 书 ,
,
初学网络编程的时候我还不知道有这样一本好书,只是上各大论坛把能找到的网络编程方
面的文章和代码下载下来,然后自己研究。后来看到别人推荐这一本书,下载了一个,看
了感觉非常好,里面的容写得很规,条理也很清楚,英文好的朋友可以直接阅读,不然就
只好去弄一本翻译好的来研究了。
我试着从 编程的根底开场,一直到探索建立高性能的网络应用程序。我说
过,我并不是以高手的身份写这本书,而是以和大家一起学习的心态学习网络编程,写书
只是让自己的思路更清晰,以后还可以翻阅。所以,我不保证书中所有的容都是绝对正确
和标准的,有不妥的地方,还希望高手批评指正。
这本书是完全免费的,读者可以任意使用书中的代码。但是如果需要,请注明原作者
和出处。如果有商业运作的需求,请直接和我联系。
第二章 网络编程根底
这本书主要探索 网络编程,开发平台是 和
!,从一个合格的 程序员到网络编程高手,还是需要花不少功夫,至少我认为
写一个聊天程序很简单,而要写一个能同时响应成千上万用户的高性能网络程序,确实不
容易。这篇文章所介绍的方法也并不是能直接应用于每一个具体的应用程序,只能作为学
习的参考资料。
开发高性能网络游戏恐怕是促使很多程序员研究网络编程的原因〔包括我〕,现在的大型
网络游戏对同时在线人数的要求比较高,真正的工程往往采取多个效劳器〔组〕负荷分担
的方式工作,我将首先把注意力放到单个效劳器的情况。
大家都知道,我们用得最多的协议是 "# 和 ,"# 是不可靠传输效劳, 是
可靠传输效劳。"# 就像点对点的数据传输一样,发送者把数据打包,包上有收信者的地
址和其他必要信息,至于收信者能不能收到,"# 协议并不保证。而 协议就像$实际
他们是一个层次的网络协议%是建立在 "# 的根底上,参加了校验和重传等复杂的机制来
保证数据可靠的传到达收信者。关于网络协议的具体容,读者可以参考专门介绍网络协议
的书籍,或者查看 &' 中的有关容。本书直接探讨编程实现网络程序的问题。
.( 介绍
是 从 ")* 继 承 开展 而 来 , 最 新的 版 本 是 !。 进 展
网络编程,你需要在你的程序中包含 )!+ 或 !+,同时你
需要添加引入库 ,-!.)/ 或 -!.)/。准备好后,你就可以着手建立你的第
- .word.zl.
- .
一个网络程序了。
编 程 有 阻 塞 和 非 阻 塞 两 种 , 在 操 作 系 统 )0 实 现 时 又 有 几 种 模 型 , 包 括
,112,13,) 重叠模型,完成端口等。要学习根
本的网络编程概念,可以选择从阻塞模式开场,而要开发真正实用的程序,就要进展非阻
塞模式的编程〔很难想象一个大型效劳器采用阻塞模式进展网络通信〕。在选择 )0 模型
时,我建议初学者可以从 112 模型开场,因为它比较简单,而且有一定的
实用性。但是,几乎所有人都认识到,要开发同时响应成千上万用户的网络程序,完成端
口模型是最好的选择。
既然完成端口模型是最好的选择,那为什么我们不直接写出一个使用完成端口的程序,
然后大家稍加修改就 了。我认为这确实是一个好的想法,但是真正做工程的时候,不
同的情况对程序有不同的要求,如果不深入学习网络编程的各方面知识,是不可能写出符
合要求的程序,在学习网络编程以前,我建议读者先学习一下网络协议。
.第一个网络程序
由于效劳器0客户端模式的网络应用比较多,而且效劳器端的设计是重点和难点。所以
我想首先探讨效劳器的设计方法,在完成效劳器的设计后再探讨其他模式的网络程序。
设计一个根本的网络效劳器有以下几个步骤:
(、初始化
、创立一个监听的
-、设置效劳器地址信息,并将监听端口绑定到这个地址上
4、开场监听
5、承受客户端连接
6、和客户端通信
7、完毕效劳并清理 和相关数据,或者返回第 4 步
我们可以看出设计一个最简单的效劳器并不需要太多的代码,它完全可以做一个小型
的聊天程序,或进展数据的传输。但是这只是我们的开场,我们的最终目的是建立一个有
大规模响应能力的网络效劳器。如果读者对操作系统局部的线程使用还有疑问,我建议你
现在就开场复习,因为我们经常使用线程来提高程序性能,其实线程就是让 " 不停的工
作,而不是总在等待 )0,或者是一个 ),累死了还是一个 "。千万不要以为线程越
多的效劳器,它的性能就越好,线程的切换也是需要消耗时间的,对于 )0 等待少的程序,
线程越多性能反而越低。
下面是简单的效劳器和客户端源代码。〔阻塞模式下的,供初学者理解〕
3
89:!;9:
3$3%
<
1#11#:
.:
:
1##&,)31:
1##&,)1:
=5(5:
- .word.zl.
- .
00初始化 !
1>$1&#$,%, 9>:#%:
00创立一个新的 来响应客户端的连接请求
.=$1',), ,&1, )&,%:
00填写效劳器地址信息
00端口为 5(5
00) 地址为 )1##&,1?,注意使用 ; 将 ) 地址转换为网络格式
31!,2=1',):
31!,>=;$%:
31!,!,=;$)1##&,1?%:
00绑定监听端口
@$., $1##&A%9>:31, B$31%%:
00开场监听,指定最时连接数为 5
$., 5%:
00承受新的连接
= >$. , $1##& A%
9>:1,9>:1.%%:
00新的连接建立后,就可以互相通信了,在这个简单的例子中,我们直接关闭连接,
00并关闭监听 ,然后退出应用程序
00
$%:
$.%:
00释放 #.. 的相关资源
1>$%:
C
- .word.zl.
剩余13页未读,继续阅读
资源评论
wdqsv88
- 粉丝: 3
- 资源: 13万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功