第二页:简易接口编程

by Brian Slesinsky

为了实现接口编程,你需要在Internet上开通一个连接,也就意味着对接口进行操作。这一直是一个困扰人的难题,因为你必须用pack( )来生成C结构,从而通过低层系统调用。但在最新版本的Perl中,这些工作由IO::Socket软件包负责处理,你只需一步就可开通一个接口。

当用户接入交谈服务器时,一个Telnet 程序将对一个指定的接头开通一个连接,所以服务器需要在指定的接头上打开接口并等待将要接入的连接。以下是用IO::Socket实现此功能的代码:

use IO::Socket;

my $listening_socket=

IO::Socket::INET->new(proto=>?/FONT>tcp?/FONT>,

Localport=>2323,

Listen=>1,

Reuse=>1) or die $!;

 

下面是几个变量的含义:

Proto: 规定所用的网络协议。此例中是TCP协议。Internet上有两种常用的协议:TCPUDPTCP用于可靠性连接,当数据丢失时可重发。而UDP用在无需重发数据的场合(比如实时的声音传输)。

Localport: 规定连接端口的编号。

Reuse: 这个接口选项的含义是:如果我们在突然关闭交谈服务器后重新启动时,可以立即启用原来的接头,而不用等待前次连接的完全中断。

现在我们等待某人的接入。当有人接入时,我们要接收这个新的连接:

$socket=$listening_socket->accept;

一旦我们建立了一个连接,就可以向用户发出一些文本:

$socket->send(?/FONT>hello\r\n?/FONT>)

or print ?/FONT>connection closed at other end\n?/FONT>;

同时接收到用户发来的一行文本*

$socket->recv(?/FONT>line,80)

if($line eq){ print ?/FONT>connection closed at other end\n?/FONT>;}

最后,当我们对连接操作完毕,记住关掉它:

$socket->close;

*实际上并非如此——参见文章末尾部分。

Page 1: How to Write a Chat Server
Page 2: Socket Programming the Easy Way
Page 3: We Don?/FONT>t Wait for Nobody
Page 4: The Echo Chamber
Page 5: Now Broadcasting
Page 6: Keeping Track of Where You Were
Page 7: What?/FONT>s Left?

 


Brian Slesinsky is a former HotWired engineer. He left the company to work full-time on his death ray.