|
|
30 | 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
E-mail:zbln426@163.com
QQ:85132383
长期寻找对战略游戏感兴趣的合作伙伴。
常用链接
留言簿(21)
随笔分类
随笔档案
SDL相关网站
我的个人网页
我的小游戏
资源下载
搜索
积分与排名
最新评论
阅读排行榜
评论排行榜
摘要: 我们将UDP版的doEcho()也设计成返回bool:true表示循环继续;false表示关闭客户端。
阅读全文
posted @
2010-06-12 12:11 lf426 阅读(3693) |
评论 (2) |
编辑 收藏
摘要: 这里跟TCP有些细微的差别。在TCP中,recv()返回0表示连接正常断开,而UDP中没有连接和断开的概念,recv()或者recvfrom()返回0表示收到一个0字节大小数据的数据报。另外,因为TCP是一对一连接的,所以一旦连接上,TCP服务器只能处理来自一个客户端的echo请求(后面会讲到多线程的使用,就可以让TCP同时处理多个客户端了);而UDP服务器则可以处理来自任何客户端的echo请求,为了返回信息到正确的客户端,我们的策略是,接收一个UDP数据包后,马上刷新发送目标地址为上一次接收地址,然后再回发数据,所以这里每次多了一个重新指定发送目的地的函数。
阅读全文
posted @
2010-06-12 11:16 lf426 阅读(2468) |
评论 (2) |
编辑 收藏
摘要: 因为UDP是按数据包接收的,我们在接收之前并不知道这个数据包有多大。一个策略是,我们准备足够大的应用程序缓存以免出错,但是这个“足够大”的概念是建立在我们对传送的数据事先有了解的情况下,比如是我们自己设计服务器端和客户端并且制定应用层协议;另外一种策略是,将一个数据包的相关信息记录在数据包的前面的一些字节中,比如说大小,这样,我们可以通过预读数据包的前面一段,得到这个数据包的相关信息,比如说大小,然后再安排缓存。
阅读全文
posted @
2010-06-11 13:30 lf426 阅读(5346) |
评论 (1) |
编辑 收藏