Provided by: manpages-zh_1.5.2-1.1_all bug

NAME

       socket - 打开一个 TCP 网络连接

总览 SYNOPSIS

       socket ?options? host port

       socket -server command ?options? port
_________________________________________________________________

描述 DESCRIPTION

       这个命令打开一个网络套接口并返回将来可被   readputsflush  命令调用使用一个通道标识
       符。目前只支持 TCP 网络协议;将来的发行可能包括对补充协议的支持。依赖于是否指定了  -server
       开关,可以使用 socket 命令来打开客户端或服务器端连接。

客户端套接口 CLIENT SOCKETS

       如果未指定   -server  选项,则打开一个的连接的客户端并且命令返回一个可被用于读写的通道标识
       符。 Porthost 指定一个要连接到的端口;必须有一个服务器接受在这个端口上的连接。Port  是
       一个整数端口号而  host  要么是一个域名式样的名字如  www.sunlabs.com 要么是一个数值 IP 地址
       如127.0.0.1。 使用 localhost 来参照在其上调用这个命令的那个主机。

       在 host 之前可以提供下列选项指定关于连接的补充信息:

       -myaddr addr
              Addr  给出用于连接的客户端网络接口的域名式样的名字或数值  IP 地址。如果客户端机器有
              多个网络接口的话这个选项会有用处。如果省略了这个选项,则由系统软件选择客户端接口。

       -myport port
              Port 指定用于连接的客户端的一个整数端口号。如果省略了这个选项,则由系统软件随机的选
              择客户端口号。

       -async -async     选项将导致客户端套接口被异步的连接。这意味着这个套接口将被立即建立,但在
              到socket的调用返回的时候可能仍未连接到服务器上。在连接尝试成功或失败之前调用了
              gets  或  flush  的时候,如果套接口在阻塞模式下,则将等待直到连接被完成或失败。如果
              套接口在非阻塞模式之下,而在连接尝试成功或失败之前调用了 gets 或 flush ,则操作立即
              返回,并且在套接口上的 fblocked 返回 1。

服务器套接口 SERVER SOCKETS

       如果指定了 -server 选项,则新套接口将是用 port 给出的端口的一个服务器。Tcl  将自动接受到这
       个给定端口的连接。对于每个连接   Tcl   将建立可以用来同客户通信的一个新通道。Tcl  接着调用
       command 并加上三个补充参数: 新通道的名字,用网络地址表示的客户的主机地址,和客户的端口号。

       在 host 之前可以提供下列选项指定关于连接的补充信息:

       -myaddr addr
               Addr 给出用于连接的服务器端网络接口的域名式样的名字或数值  IP 地址。如果服务器机器
              有多个网络接口的话这个选项会有用处。如果省略了这个选项,则服务器套接口被绑定到特殊
              地址  INADDR_ANY 上,这样它可以接受来自任何接口的连接。

       服务器通道不能被用来输入或输出;它们唯一的用处是接受新的客户连接。为每个到来的客户连接建立
       的通道是为输入和输出而打开的。关闭服务器通道将关断服务器,这样就不能接受新连接了,不影响现
       存的连接。

       服务器套接口依赖于 Tcl  事件机制来找出何时打开了新连接。如果应用未进入事件循环,例如通过调
       用 vwait 命令或调用 C 过程 Tcl_DoOneEvent,则不接受连接。

配置选项 CONFIGURATION OPTIONS

       可以使用 fconfigure 命令来查询套接口通道的许多只读配置选项:                                │

       -error                                                                                     │
              这个选项得到给定套接口的当前错误状态。在你需要确定一个异步连接操作是否成功的时候这  │
              个选项会有用处。如果有一个错误,则返回错误消息。如果没有错误,则返回空串。

       -sockname
              这个选项返回三个元素的一个列表,分别是这个套接口的地址、主机名和端口号。如果不能计
              算出这个主机名,第二个元素等同与列表的第一个元素地址。

       -peername
              服务器套接口不支持这个选项。对于客户和接受的套接口,这个选项返回三个元素的一个列
              表;它们是地址、主机名字和对等的套接口所连接或绑定到端口。如果不能计算出这个主机
              名,第二个元素等同与列表的第一个元素地址。

参见 SEE ALSO

       flush(n), open(n), read(n)

关键字 KEYWORDS

       bind, channel, connection, domain name, host, network address, socket, tcp

[中文版维护人]

       寒蝉退士

[中文版最新更新]

       2001/11/10

《中国 Linux 论坛 man 手册页翻译计划》:

       http://cmpp.linuxforum.net