Provided by:
manpages-zh_1.5.1-1_all 
NAME
socket - 打開一 TCP 網路連接
` SYNOPSIS
socket ?options? host port
socket -server command ?options? port
_________________________________________________________________
yz DESCRIPTION
這茤R令打開一蚨蘢纁M接口並返回將來可被 read、puts 和 flush
命令調用使用一茬q道標識符。目前只支持 TCP
網路協議;將來的發行可能包括對補充協議的支持。依賴於是否指定了 -server
開關,可以使用 socket 命令來打開客戶端或伺服器端連接。
Mf CLIENT SOCKETS
如果未指定 -server 選項,則打開一茠熙s接的客戶端並且命令返回一-
茈i被用於讀寫的通道標識符。 Port 和 host 指定一-
n連接到的端口;必須有一茼曭A器接受在這蚨搕f上的連接。Port 是一-
蚞蒱搕f號而 host n麼是一荌鴞W式樣的名字如 www.sunlabs.com n麼是一蚍
IP 地址如127.0.0.1。 使用 localhost 來參照在其上調用這茤R令的那茈D機。
在 host 之前可以提供下列選項指定關於連接的補充信息:
-myaddr addr
Addr 給出用於連接的客戶端網路接口的域名式樣的名字或數 IP
地址。如果客戶端機器有多蚨蘢翿竣f的話這-
蚇龠絲|有用處。如果省略了這蚇龠窗A則由系統軟體選擇客戶端接口。
-myport port
Port 指定用於連接的客戶端的一蚞蒱搕f號。如果省略了這-
蚇龠窗A則由系統軟體隨機的選擇客戶端口號。
-async -async 選項將導P客戶端套接口被異步的連接。這意味著這-
荇M接口將被立即建立,但在到socket的調用返回的時-
唹i能仍未連接到伺服器上。在連接嘗試成巧峊2悀妨e調用了 gets
或 flush 的時-
唌A如果套接口在阻塞模式下,則將等待直到連接被完成或失敗。如果套接口在非阻塞模式之下,而在連接嘗試成巧峊2悀妨e調用了
gets 或 flush ,則操作立即返回,並且在套接口上的 fblocked 返回
1。
AMf SERVER SOCKETS
如果指定了 -server 選項,則新套接口將是用 port 給出的端口的一-
茼曭A器。Tcl 將自動接受到這茧鼎w端口的連接。對於每茬s接 Tcl
將建立可以用來同客戶通信的一虓s通道。Tcl 接著調用 command 並加上三-
虒犮R參數:
新通道的名字,用網路地址表示的客戶的主機地址,和客戶的端口號。
在 host 之前可以提供下列選項指定關於連接的補充信息:
-myaddr addr
Addr 給出用於連接的伺服器端網路接口的域名式樣的名字或數 IP
地址。如果伺服器機器有多蚨蘢翿竣f的話這-
蚇龠絲|有用處。如果省略了這蚇龠窗A則伺服器套接口被綁定到特殊地址
INADDR_ANY 上,這樣它可以接受來自任何接口的連接。
伺服器通道不能被用來輸入或輸出;它怜艉@的用處是接受新的客戶連接。為每-
茖鴩茠澈幙s接建立的通道是為輸入和輸出而打開的。關閉伺服器通道將關斷伺服器,這樣就不能接受新連接了,不影響現存的連接。
伺服器套接口依賴於 Tcl
事件機制來找出何時打開了新連接。如果應用未進入事件循環,例如通過調用
vwait 命令或調用 C 過程 Tcl_DoOneEvent,則不接受連接。
tm CONFIGURATION OPTIONS
可以使用 fconfigure 命令來查詢套接口通道的釵h只讀配置選項: |
-error ||
這蚇龠絞o到給定套接口的當前錯誤狀態。在你需n確定一- |
茞夾B連接操作是否成左漁尕這蚇龠絲|有用處。如果有一- |
蚇欞~,則返回錯誤消息。如果沒有錯誤,則返回空串。
-sockname
這蚇龠答藀^三茪葛尷漱@茼C表,分別是這-
荇M接口的地址、主機名和端口號。如果不能p算出這茈D機名,第二-
茪葛懇它P與列表的第一茪葛嬰a址。
-peername
伺服器套接口不支持這蚇龠窗C對於客戶和接受的套接口,這-
蚇龠答藀^三茪葛尷漱@茼C表;它-
怓O地址、主機名字和對等的套接口所連接或綁定到端口。如果不能-
p算出這茈D機名,第二茪葛懇它P與列表的第一茪葛嬰a址。
SEE ALSO
flush(n), open(n), read(n)
r KEYWORDS
bind, channel, connection, domain name, host, network address, socket,
tcp
[]
Hhh
[]
2001/11/10
m Linux manUpn:
http://cmpp.linuxforum.net