freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]第7章網(wǎng)絡(luò)通訊相關(guān)的c語言應(yīng)用-資料下載頁

2025-10-10 00:25本頁面
  

【正文】 只是將遠程主機的套接字地址結(jié)構(gòu)以參數(shù)to出現(xiàn)在參數(shù)中。 套接字相關(guān)的 API及應(yīng)用 ? sendto和 recvfrom函數(shù) ? recvfrom函數(shù)的語法要點如下所示。 ? ? 頭文件 ? include sys/ ? include sys/ ? ? 函數(shù)原型 ? int recvfrom( int sockfd, /*套接字描述符 */ ? void *buf, /*存放接收數(shù)據(jù)的緩沖區(qū) */ ? int len, /*數(shù)據(jù)長度 */ ? unsigned int flags, /*一般為 0*/ ? struct sockaddr *from, /*源機的 IP地址和端口號信息 */ ? int *tolen) /*地址長度 */ ? ? 函數(shù)返回值 ? 成功:接收的字節(jié)數(shù) ? 出錯: 1 ? 同樣的, recvfrom函數(shù)和 recv函數(shù)也基本一致。 recvfrom函數(shù)返回它接收到的字節(jié)數(shù),如果發(fā)生了錯誤,它就返回 1。 套接字相關(guān)的 API及應(yīng)用 ? close和 shutdown函數(shù) ? 程序進行網(wǎng)絡(luò)傳輸完畢后,需要關(guān)閉這個套接字描述符所表示的連接。實現(xiàn)這個非常簡單,只需要使用標準的關(guān)閉文件的函數(shù) close。 ? 執(zhí)行 close之后,套接字將不會再允許進行讀操作和寫操作。任何有關(guān)對套接字描述符進行讀和寫的操作都會接收到一個錯誤。 套接字相關(guān)的 API及應(yīng)用 ? close和 shutdown函數(shù) ? 如果希望對套接字的關(guān)閉進行進一步操作的話,可以使用 shutdown函數(shù)。它允許進行單向的關(guān)閉操作,或者全部關(guān)閉掉。其語法要點如下所示。 ? ? 頭文件 ? include sys/ ? ? 函數(shù)原型 ? int shutdown( int sockfd, /*套接字描述符 */ ? int how) /*操作方式 */ ? ? 函數(shù)返回值 ? 成功: 0 ? 出錯: 1 ? 其中參數(shù) how可以取下面的值。 0表示不允許接收數(shù)據(jù); 1表示不允許發(fā)送數(shù)據(jù); 2表示和 close函數(shù)一樣,不允許任何操作(包括接收與發(fā)送)。 套接字相關(guān)的 API及應(yīng)用 ? setsockopt和 getsockopt函數(shù) ? Linux所提供的 socket庫含有一個 bug,它表現(xiàn)為你不能為一個套接字重新啟用同一個端口號,即使在正常關(guān)閉該套接字以后。 ? 當(dāng)套接字已經(jīng)打開但尚未有連接的時候用 setsocket函數(shù)在其上設(shè)定選項。 setsockopt函數(shù)設(shè)置選項,而 getsockopt函數(shù)從給定的套接字取得選項。 ? 這兩個函數(shù)的語法要點如下所示。 ? ? 頭文件 ? include sys/ ? include sys/ ? ? 函數(shù)原型 ? int getsockopt( int sockfd, /*套接字描述符 */ ? int level, /*協(xié)議標準 */ ? int name, /*選項 */ ? char* value,/*所要設(shè)置或獲取的選項值 */ ? int* optlen)。/*參數(shù)的長度 */ ? int setsockopt( int sockfd, int level, int name, char* value, int* optlen)。 套接字相關(guān)的 API及應(yīng)用 ? ? 函數(shù)返回值 ? 成功: 0 ? 出錯: 1 ? 這樣,當(dāng)我們打開一個套接字時必須同時用下面的代碼來調(diào)用 setsockopt函數(shù)。 ? opt = 1。 ? len = sizeof(opt)。 ? setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, amp。opt, amp。len)。 套接字相關(guān)的 API及應(yīng)用 ? getpeername函數(shù) ? 這個函數(shù)可以取得一個已經(jīng)連接上的套接字的遠程信息(比如 IP地址和端口),告訴你在遠程和你連接的究竟是誰。該函數(shù)的語法要點如下所示。 ? ? 頭文件 ? include sys/ ? ? 函數(shù)原型 ? int getpeername( int sockfd, /*套接字描述符 */ ? struct sockaddr* addr, /*獲得的遠程信息 */ ? int* addrlen)。 /*地址結(jié)構(gòu)的長度 */ ? ? 函數(shù)返回值 ? 成功: 0 ? 出錯: 1 ? 當(dāng)我們擁有了遠程連接用戶的 IP地址,就可以使用 i_ntoa函數(shù)或者gethostbyname函數(shù)來輸出信息或是做進一步的處理。 套接字相關(guān)的 API及應(yīng)用 ? gethostname函數(shù) ? 該函數(shù)可以取得本地主機的信息,它返回正在執(zhí)行它的計算機的名字。返回的這個名字可以被 gethostbyname函數(shù)使用,由此可以得到本地主機的 IP地址。其語法要點如下所示。 ? ? 頭文件 ? include ? ? 函數(shù)原型 ? int gethostname( char* hostname, /*函數(shù)返回時,保存主機的名字 */ ? size_t size); /*hostname指向的數(shù)組的長度 */ ? ? 函數(shù)返回值 ? 成功: 0 ? 出錯: 1 套接字相關(guān)的 API及應(yīng)用 ? 編程實例 s o c k e t 服 務(wù) 器 端 c l o s e s e n d / s e n d t o r e c v / r e c v f r o m a c c e p t l i s t e n b i n d s o c k e t c l o s e r e c v / r e c v f r o m s e n d / s e n d t o c o n n e c t客 戶 端b i n d使用 TCP協(xié)議 socket編程流程圖 套接字高級編程 ? 在實際情況中,人們往往遇到多個客戶端連接服務(wù)器端的情況。在之前介紹的例子中我們使用阻塞函數(shù),因此如果資源沒有準備好,則調(diào)用該函數(shù)的進程將進入睡眠狀態(tài),這樣就無法處理其他請求的情況了。 ? 本節(jié)給出了兩種解決 I/O多路復(fù)用的解決方法,分別為 : ? 非阻塞訪問(使用 ftl()函數(shù)) ? 多路復(fù)用處理(使用 select()或 poll()函數(shù)) 套接字高級編程 ? 非阻塞訪問 ? 函數(shù) ftl()針對 socket編程提供了如下的編程特性。 ? ? 非阻塞 I/O:可將 cmd設(shè)置為 F_SETFL,將 lock設(shè)置為O_NONBLOCK。 ? ? 異步 I/O:可將 cmd設(shè)置為 F_SETFL,將 lock設(shè)置為O_ASYNC。 …… /* 調(diào)用 ftl()函數(shù)給套接字設(shè)置非阻塞屬性 */ flags = ftl(sockfd, F_GETFL)。 if (flags 0 || ftl(sockfd, F_SETFL, flags|O_NONBLOCK) 0) { perror(ftl)。 exit(1)。 } …… 套接字高級編程 ? 使用多路復(fù)用 ? 使用 ftl()函數(shù)雖然可以實現(xiàn)非阻塞 I/O或信號驅(qū)動 I/O,但在實際使用時往往會對資源是否準備完畢進行循環(huán)測試,這樣就大大增加了不必要的 CPU資源的占用。在這里可以使用 select()函數(shù)(或者使用 poll()函數(shù))來解決這個問題,同時,使用 select()函數(shù)還可以設(shè)置等待的時間,可以說功能更加強大。 ? 下面是 使用 select()函數(shù)的服務(wù)器端源代碼 。客戶端程序基本上與 ,僅加入一行 sleep()函數(shù),使得客戶端進程等待幾秒鐘才結(jié)束。 本章小結(jié) ? 掌握嵌入式 Linux網(wǎng)絡(luò)開發(fā)的相關(guān) API函數(shù) ? 了解 TCP/IP層次模型的基本知識,以及其中的重要協(xié)議 ? 掌握網(wǎng)絡(luò)基礎(chǔ)編程的相關(guān) API函數(shù),以及常見的開發(fā)流程 ? 掌握對套接字的高級編程,了解套接字的非阻塞訪問與多路復(fù)用處理
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1