套接字是通過標準的
unix
檔案描述符和其他的程式通訊的乙個方法。套接字在使用前必須先被建立,建立套接字的系統呼叫為
socket()
,它的一般形式是:
int socket(int domain, int type, int protocol);
建立出來的套接字是一條通訊線路的乙個端點,
domain
引數負責指定位址族,
type
引數負責指定與這個套接字一起使用的通訊型別,而
protocol
引數負責制定所使用的協議。
domain
引數的取值範圍如表
18.2
所示。表
18.2domain
引數的取值範圍 參
數 說明
af_unix
unix
內部(檔案系統套接字)
af_inet
arpa
網際網路協議(
unix
網路套接字)
af_iso
iso標準協議
af_ns
施樂網路系統協議
af_ipx
novell ipx協議
最常用的套接字域是
af_unix
和af_inet
,前者用於通過
unix
檔案系統實現的本地套接字,後者用於
unix
網路套接字。
af_inet
套接字可以用在穿過包括
internet
在內的各種
tcp/ip
網路而進行通訊的應用程式中。
套接字引數
type
指定了與新套接字對應的通訊特性。它的取值範圍為列舉常量
sock_stream
和sock_dgram
。sock_stream
是乙個有序的、可靠的、基於連線的雙向位元組流。對於乙個
af_inet
域的套接字來說,如果在戀歌流式套接字的兩端之間建立的是乙個
tcp連線,連線時預設值即為該特性。
sock_dgram
是乙個資料圖服務,可以用來傳送最大長度是乙個固定值的訊息,但訊息是否會被送達或者訊息的先後次序是否會在網路傳輸中被重新安排並沒***。對於
af_inet
域的套接字來說,這種型別的通訊是由
udp提供的。
通訊所用的協議通常是由套接字的型別和套接字的域來決定,如果還有其他的協議可以選擇,那麼就在
protocol
引數裡設定。
protocol
引數預設值為
0,表示使用預設的協議。
socket
系統呼叫返回的是乙個描述符,它與檔案描述符非常相似。當這個套接字和通訊線路另一端的套接字連線好以後,就可以進行資料的傳輸和接收操作了。
4 6 2 建立套接字
當 socket 函式返回 invalid socket 時,呼叫 showerrormsg 函式顯示呼叫失敗的原因。建立套接字程式清單如下。建立 windows socket shost socket af inet,sock stream,ipproto tcp if invalid socke...
建立套接字失敗
if afxsocketinit 執行程式,會發現彈出對話方塊 載入套接字型檔失敗。原因是因為該段 新增的位置不對。必須寫在initinstance函式的開始位置,建立視窗前 考慮到afxsocketinit 函式只能載入1.1版本的套接字型檔,若要載入其他版本的套接字型檔,則需要新增如下 word...
18 3 5 建立套接字佇列
為了能夠在套接字上接受接入的連線,伺服器程式必須建立乙個佇列來儲存到達的請求。建立佇列可使用系統呼叫 listen 完成,它的一般形式為 int listen int socket,int backlog linux 系統可能會對佇列裡能夠容納的排隊連線的最大個數有限制。在這個最大值的範圍內,lis...