位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 socket()函數(shù)

提問人:劉團圓發(fā)布時間:2020-12-03

socketO函數(shù)用于創(chuàng)建通信的套接字,并返回該套接字的文件描述符。其原型如下:

    int socket(int domain, int type. int protocol);

其中:

(1)參數(shù)domain指定了通信域,用于選擇通信協(xié)議族,其取值情況如表所示。

名稱

含義

擠注

PF—UNI乂. PF_LOCAL

本地通信

“man7UNI乂"可以獲得具體幫助信息

PF_INET

IPv4協(xié)議

“man6ip”可以獲得具體幫助信息

PF_INET6

IPv6協(xié)議

-

PF_IP

Novell公司的IP乂協(xié)議

-

PF_NETUNK

與內(nèi)核間的接口

“man 7 netlink”可以獲得具體幫助信息

PF _25

ITU-T .25 / ISO-8208

“man 7 x25” 可以獲得具體幫助信息

PF_AX25

無線A.25協(xié)議

-

PF_ATAAPVC

訪問原始ATMPVC

-

PF_APPLETALK

蘋果公司的Appletdlk協(xié)議

"man 7 ddp"可以獲得具體幫助信息

PF_PACKET

底層包接口

“man 7 packet”獲得具體幫助信息

(2)參數(shù)type用于指定套接字的類型。套接字類型除了前面提到的流套接字、數(shù)據(jù)報套接字及原始套接字外,還有其他的幾種類型,如表所示。

套接字類鍛

說明

SOCK _ STREAM

提供有序、可靠、雙向及基于連接的字節(jié)流。支持帶外傳輸機制

SOCK _ DGRAM

支持數(shù)據(jù)報

SOCK _ SEQPACKET

提供有序、可靠、雙向基于連接的數(shù)據(jù)報通信

SOCK _ RAW

提供對原始網(wǎng)絡(luò)協(xié)議的訪問

SOCK _ RDM

提供可靠的數(shù)據(jù)報層,但是不保證有序性

SOCK_PACKET

該參數(shù)已經(jīng)廢除

流套接字(SOCK_STREAM )與管道類似,是一種全雙工的比特流。流套接字在發(fā)送或接收數(shù)據(jù)前必須處于連接狀態(tài)。實現(xiàn)流套接字的通信協(xié)議保證了傳輸?shù)臄?shù)據(jù)不會丟失。

(3)參數(shù)protocol用于指定套接字使用的通信協(xié)議。正常情況下,對于給定的協(xié)議族,只有單一的協(xié)議支持特定的套接字類型。這時,只要將protocol參數(shù)設(shè)置為0即可。 

socket()函數(shù)常見的錯誤信息:

? EACCES:創(chuàng)建指定類型的套接字失敗。

? EAFNOSUPPORT: 不支持指定的地址族。

? EINVAL:未知協(xié)議或未知的協(xié)議族。

? EMFILE:進程文件表溢出。

? ENFILE:達到打開文件的系統(tǒng)限制。

? ENOBUFS或ENOMEM: 內(nèi)存不足。

? EPROTONOSUPPORT:指定的協(xié)議類型在該域中不支持。


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部