May 04

网游服务器的数据接收机制讨论得比较多, 但发送机制的讨论就少得多了.

写数据和读数据一样, 都会涉及到超时关闭连接的问题. 但是, 读超时一般在应用层实现, 而不是在传输层实现. 一般的网游协议都会设计心跳机制. 写超时不适合在应用层实现, 而应该在传输层实现. 数据的发送(写)操作如果处理不好, 会让服务器进程阻塞写操作上.

写操作的层次

1. 应用层写操作

Continue reading »

Written by benegg at 2009-05-04 23:15:11

Apr 29

持续收集中...

Written by benegg at 2009-04-29 10:34:24

Apr 23

通过diff工具生成补丁, patch工具打上补丁.

在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源码必须保留原来的文件名, 例如, 如果你修改源码中的a.c文件, 那么, 修改后的文件还是名为a.c, 在修改之前你可以复制a.c为a.orig.c进行备份.

diff命令必须在整个Linux源码的根目录的上一级目录中执行.

1. 为单个文件生成补丁

diff -up linux-2.6.28.8/net/sunrpc/svc.orig.c linux-2.6.28.8/net/sunrpc/svc.c

这条命令会产生类似如下的输出, 你将它重定向到一个文件中, 这个文件就是patch.

--- linux-2.6.28.8/net/sunrpc/svc.orig.c 2009-03-17 08:50:04.000000000 +0800
+++ linux-2.6.28.8/net/sunrpc/svc.c 2009-03-30 19:18:41.859375000 +0800
@@ -1050,11 +1050,11 @@ svc_process(struct svc_rqst *rqstp)

参数详解:
-u 显示有差异行的前后几行(上下文), 默认是前后各3行, 这样, patch中带有更多的信息.
-p 显示代码所在的c函数的信息.

Continue reading »

Written by benegg at 2009-04-23 09:49:15 | tags:

Apr 22

西山居的陈杰的幻灯片, 讲了网游服务端寻路, 当然也包括网游服务器的架构. 有不少有用的概念.

http://docs.google.com/Present?docid=dds5zgx6_429v8d9crgc

另一个人总结了一些有用的东西:

  1. 将独立的模块封装成单独的进程。
  2. 进程间通讯(IPC)使用TCP,为什么使用TCP而不是其他更高效的本地IPC方式?一方面因为大部分项目都有现成稳定的TCP模块,另外一方面更容易将一台服务器拆分到多个服务器,程序完全不用修改。

http://timyang.net/architecture/game-backend/

强烈推荐想要开发网游的朋友都好好看这两篇文章!

Written by benegg at 2009-04-22 19:42:29