位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

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

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-03

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

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

其中:

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

名稱(chēng)

含義

擠注

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

無(wú)線(xiàn)A.25協(xié)議

-

PF_ATAAPVC

訪問(wèn)原始ATMPVC

-

PF_APPLETALK

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

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

PF_PACKET

底層包接口

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

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

套接字類(lèi)鍛

說(shuō)明

SOCK _ STREAM

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

SOCK _ DGRAM

支持?jǐn)?shù)據(jù)報(bào)

SOCK _ SEQPACKET

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

SOCK _ RAW

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

SOCK _ RDM

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

SOCK_PACKET

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

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

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

socket()函數(shù)常見(jiàn)的錯(cuò)誤信息:

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

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

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

? EMFILE:進(jìn)程文件表溢出。

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

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

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


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

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