Unix Socket - 套接字幫助函數(shù)

本章將描述所有在socket編程中使用的輔助函數(shù)。其他輔助功能請(qǐng)參見(jiàn)“端口與服務(wù)”和“網(wǎng)絡(luò)字節(jié)順序”章節(jié)。

The?write?Function

write函數(shù)嘗試將nbyte字節(jié)從buf所指向的緩沖區(qū)寫(xiě)入與打開(kāi)的文件描述符fildes相關(guān)聯(lián)的文件。

也可以使用send()函數(shù)將數(shù)據(jù)發(fā)送到另一個(gè)進(jìn)程。

#include <unistd.h>
int write(int fildes, const void *buf, int nbyte);

成功完成后,write()返回與fildes相關(guān)聯(lián)的文件實(shí)際寫(xiě)入的字節(jié)數(shù)。這個(gè)數(shù)字不會(huì)大于nbyte。否則返回-1。

Parameters

? ??fildes??它是套接字函數(shù)返回的套接字描述符。

? ??buf?? 它是一個(gè)指針,指向您想要發(fā)送的數(shù)據(jù)。

? ??nbyte?? 它是要寫(xiě)入的字節(jié)數(shù)。如果nbyte為0,write()將返回0,如果文件是普通文件則沒(méi)有其他結(jié)果;否則,結(jié)果是不指定的。

The?read?Function

read函數(shù)嘗試從與緩沖區(qū)fildes相關(guān)的文件中讀取nbyte字節(jié)到buf所指向的緩沖區(qū)中。

你也可以使用recv()函數(shù)來(lái)讀取數(shù)據(jù)到另一個(gè)進(jìn)程。

#include <unistd.h>
int read(int fildes, const void *buf, int nbyte);

成功完成后,write()返回與fildes相關(guān)聯(lián)的文件實(shí)際寫(xiě)入的字節(jié)數(shù)。這個(gè)數(shù)字不會(huì)大于nbyte。否則返回-1。

Parameters

? ??fildes???它是套接字函數(shù)返回的套接字描述符。

? ??buf?? 它是讀取信息的緩沖區(qū)。

? ??nbyte???它是要讀取的字節(jié)數(shù)。

The?fork?Function

fork函數(shù)創(chuàng)建一個(gè)新進(jìn)程。調(diào)用子進(jìn)程的新進(jìn)程將是調(diào)用進(jìn)程(父進(jìn)程)的精確副本。子進(jìn)程繼承父進(jìn)程的許多屬性。

#include <sys/types.h>
#include <unistd.h>

int fork(void);

成功完成后,fork()向子進(jìn)程返回0,向父進(jìn)程返回子進(jìn)程的進(jìn)程ID。否則,父進(jìn)程返回-1,不創(chuàng)建子進(jìn)程,并設(shè)置errno來(lái)指示錯(cuò)誤。

Parameters

? ??void?? 這意味著不需要參數(shù)。

The?bzero?Function

bzero函數(shù)的作用是:在字符串s中放置nbyte的空字節(jié)。該函數(shù)用于設(shè)置所有的套接字結(jié)構(gòu)為空值。

void bzero(void *s, int nbyte);

這個(gè)函數(shù)不返回任何東西。

Parameters

? ??s?? 它指定了必須用空字節(jié)填充的字符串。這將是一個(gè)指向socket結(jié)構(gòu)變量。

? ??nbyte?? 它指定要用空值填充的字節(jié)數(shù)。這將是套接字結(jié)構(gòu)的大小。

The?bcmp?Function

bcmp函數(shù)將字節(jié)串s1與字節(jié)串s2進(jìn)行比較。兩個(gè)字符串都假定為nbyte字節(jié)長(zhǎng)。

int bcmp(const void *s1, const void *s2, int nbyte);

如果兩個(gè)字符串相同,則返回0,否則返回1。當(dāng)nbyte為0時(shí),bcmp()函數(shù)總是返回0。

Parameters

? ??s1?? 它指定要比較的第一個(gè)字符串。

? ??s2?? 它指定要比較的第二個(gè)字符串。

? ??nbyte?? 它指定要比較的字節(jié)數(shù)。

The?bcopy?Function

bcopy函數(shù)的作用是:將字符串s1中的nbyte字節(jié)復(fù)制到字符串s2中。重疊字符串被正確處理。

void bcopy(const void *s1, void *s2, int nbyte);

這個(gè)函數(shù)不返回任何東西。

Parameters

? ??s1?? 它指定源字符串。

? ??s2v?? 它指定目標(biāo)字符串。

? ??nbyte?? 它指定要復(fù)制的字節(jié)數(shù)。

The?memset?Function

memset函數(shù)也用于設(shè)置結(jié)構(gòu)變量,方法與bzero相同。下面給出了它的語(yǔ)法。

void *memset(void *s, int c, int nbyte);

這個(gè)函數(shù)返回一個(gè)指向void的指針;事實(shí)上,一個(gè)指向集合內(nèi)存的指針,您需要相應(yīng)地對(duì)它進(jìn)行分類。

Parameters

? ??s?? 它指定要設(shè)置的源。

? ??c?? 它指定要在nbyte位置上設(shè)置的字符。

? ??nbyte?? 它指定要設(shè)置的字節(jié)數(shù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容