LPC网络编程(1 - 3)
2007/5/12 22:31:10

      1992 October 20
                  作者 / Cynosure (Dave Richards)
          少量更新于 1994 Sept 16 由 Robocoder (Anthon Pang)
              翻译 / Jjgod Jiang (2002 Jul 6-8, Nov 24)
在 MudOS 0.8.14 和 0.9.0 中的一个增强就是 Internet socket 功能被包含
进来了。MudOS 与 TMI 研究者一直希望使网络上 MUD 的更紧密地通过通信集
成在一起, Socket efun (或者 LPC socket) 依靠允许 LPC 开发者写作基于
Internet socket 的应用程序提供了第一级的 MUD 集成性。 例如,已经存在
用于 telnet、远程 MUD finger、远程 MUD tell、互联 MUD 邮件递送以及参
与 MUDWHO 系统的 LPC 物件。
之所以要写这么一份文档, 就是要把它作为一个指导你如何使用 LPC socket
进行基于网络的互联编程的指南。 它的定位将是那些有一定经验的 LPC 程序
员,他们已经理解 LPC 编程的大部分基础内容,但希望写一些基于网络的LPC
服务。
Socket 模式
-----------
一共有五种不同的通信模式或者叫做套接字(socket)模式:
MUD、STREAM、DATAGRAM、STREAM_BINARY,和 DATAGRAM_BINARY。这五种模式
的定义可以在 mudlib include 的 <socket.h> 中找到。
MUD 模式
--------
MUD 模式是一个面向连接的通信模式, 这种模式中 LPC 数据类型可以由网络
从一个 MUD 传送到另一个 MUD。例如,在 MUD 模式中你可以发送结构数据—
—如数组和映射——穿过网络到另一个也使用 MUD 模式 socket 的 MUD 中。
除 object 以外的所有的 LPC 数据类型都可以由 MUD 模式发送和接收。
jjgod 注:无法传送物件造成了穿越 mud 的功能, 比如一直比较热的分站漫
          游功能受到一些阻碍,我们需要较为麻烦的获得一个物件身上所有
          的变量(比如一个 USER_OB, 需要查找 /clone/user/user.c 以及
          所有直接和间接继承——可以用 deep_inherit_list  得到——的
          的文件中的变量),然后一个一个的发送和接收。 这样就造成兼容
          性和可扩展性很成问题。
STREAM 模式
-----------
STREAM 模式也是一个面向连接的通信模式,和 MUD 模式不同的是,所有的数
据都是以字符串形式发送和接收的。所以,你可以通过 STREAM 模式从其他的
网络端(比如你自己写的一个 MUD 客户端)发送到 MUD 中。由于无法直接发送
和接收所有的 LPC 数据类型,STREAM 模式会显得不那么强大,但很多应用程
序,像 telnet,用不着发送整数、数组这样的数据, 而都是以各个方向的字
符流的形式浏览的。
MUD 模式 socket 其实就是使用特殊的代码以通过 STREAM 模式来实现发送和
接收 LPC 数据类型。因此,如果应用程序需要额外的数据提取,更适合用MUD
模式。 但 MUD 模式由于其固有的限制,将比 STREAM 模式更慢,也将使用更
多的内存。 注意,STREAM 模式是无法确保发送的字符串能够全部立即到达,
实际上它们是一份一份的送到后, 再将之重新组合在一起(每一份将按顺序到
达)。
DATAGRAM 模式
-------------
和 MUD 与 STREAM 模式不同,DATAGRAM 模式是无连接的。你不需要确立一个
连接就可以在 MUD 间传输数据了。因此,每份数据是采用一种叫“datagram”
的数据包发送到目的地的,每个这种数据包都自带寻址信息,能够自觉地从网
络的一端行走到另一端。
因为 DATAGRAM 模式没有一个确定的连接,所以发出的 datagram 包有可能在
网络中就这么丢失了,没有任何一个 MUD 能收到它。 例如 TMI 用 DATAGRAM
模式发送的一个到 Portals 的数据包如果在网络中丢失了, Portals 可能永
远收不到它,而且完全不知道曾经发送过这么一个数据包。 而且 TMI 也无法
得知这个数据包是否丢失了,因为就算丢失了也不会收到任何错误信

下一页
返回列表
返回首页
©2025 MUD游戏网_文字mud 电脑版
Powered by iwms