18 3 2 建立套接字

2021-05-14 13:08:14 字數 1444 閱讀 1821

套接字是通過標準的

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...