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

正文內(nèi)容

linux教程網(wǎng)絡(luò)高級(jí)編程-文庫吧資料

2025-05-19 22:31本頁面
  

【正文】 /* 在這里調(diào)用 accept()函數(shù) */ accept()函數(shù) ? include sys/ ? int accept(int sockfd, void *addr, int *addrlen)。 ? bind() 。 ? 在 listen()函數(shù)調(diào)用之前,需要使用 bind() 函數(shù)來指定使用本地的哪一個(gè)端口數(shù)值。 ? listen()如果返回 –1 ,那么說明在 listen()的執(zhí)行過程中發(fā)生了錯(cuò)誤。 每一個(gè)連入請(qǐng)求都要進(jìn)入一個(gè)連入請(qǐng)求隊(duì)列,等待 listen的程序調(diào)用 accept()函數(shù)來接受這個(gè)連接。 ? sockfd是一個(gè)套接字描述符,由 socket()系統(tǒng)調(diào)用獲得。全局變量 errno將會(huì)存儲(chǔ)錯(cuò)誤代碼。 ? addrlen應(yīng)該是 sizeof(struct sockaddr)。 ? sockfd :套接字文件描述符,由 socket()函數(shù)返回的。errno的值為錯(cuò)誤代碼。如果你只是想進(jìn)行連接一臺(tái)服務(wù)器,也就是進(jìn)行 connect() 操作的時(shí)候,這一步并不是必須的。 ? bind()函數(shù)可以幫助你指定一個(gè)套接字使用的端口。 ? my_addr是一個(gè)指向 struct sockaddr的指針。 bind() 函數(shù) ? include sys/ ? include sys/ ? int bind (int sockfd , struct sockaddr *my_addr , int addrlen) 。如果發(fā)生錯(cuò)誤, socket()函數(shù)返回 –1 。 ? 套接字創(chuàng)建時(shí)沒有指定名字.客戶機(jī)用套接字的名字讀寫它。 ? domain需要被設(shè)置為 “ AF_INET” ? type參數(shù)告訴內(nèi)核這個(gè) socket是什么類型, “ SOCK_STREAM”或是 “ SOCK_DGRAM”。我們可以要求系統(tǒng)內(nèi)核在所有的操作結(jié)束后(包括從網(wǎng)絡(luò)上讀取信息,然后拷貝到我們提供給內(nèi)核的緩存區(qū)中)給我們發(fā)一個(gè)消息。 ? 當(dāng)我們進(jìn)行一個(gè) IO操作的時(shí)候,我們傳遞給內(nèi)核我們的文件描述符,我們的緩存區(qū)指針和緩存區(qū)的大小,一個(gè)偏移量 offset,以及在內(nèi)核結(jié)束所有操作后和我們聯(lián)系的方法。 ? 異步 I/O和信號(hào)驅(qū)動(dòng) I/O的區(qū)別是: ? 信號(hào)驅(qū)動(dòng) I/O模式下,內(nèi)核在操作可以被操作的時(shí)候通知給我們的應(yīng)用程序發(fā)送 SIGIO消息。具體的 I/O和數(shù)據(jù)的拷貝全部由內(nèi)核來完成,我們的程序可以繼續(xù)向下執(zhí)行。我們可以考慮在一個(gè)只進(jìn)行監(jiān)聽網(wǎng)絡(luò)連接操作的套接字上使用異步 I/O,這樣當(dāng)有一個(gè)新的連接的時(shí)候, SIGIO信號(hào)將會(huì)產(chǎn)生。對(duì)于我們的程序來講,是無法區(qū)分這兩個(gè) SIGIO有什么區(qū)別的。 ? 發(fā)生了一個(gè)異步 I/O的錯(cuò)誤。 ? 套接字接收到新數(shù)據(jù)。 ? 一個(gè)斷線的請(qǐng)求成功的結(jié)束。在 TCP連接中, SIGIO信號(hào)將會(huì)在這個(gè)時(shí)候產(chǎn)生: ? 在一個(gè)監(jiān)聽某個(gè)端口的套接字上成功的建立了一個(gè)新連接。 ? 2. TCP套接字的 SIGIO信號(hào) ? 不幸的是,異步 I/O幾乎對(duì) TCP套接字而言沒有什么作用。 ? 套接字發(fā)生了異步錯(cuò)誤。 信號(hào)驅(qū)動(dòng) I/O模式 ? 雖然設(shè)定套接字為異步 I/O非常簡(jiǎn)單,但是使用起來困難的部分是怎樣在程序中斷定產(chǎn)生 SIGIO信號(hào)發(fā)送給套接字屬主的時(shí)候,程序處在什么狀態(tài)。在 SVR4系統(tǒng)中, SIGIO在 sys/ 頭文件中被定義為 SIGPOLL,而 SIGPOLL信號(hào)的缺省動(dòng)作是終止這個(gè)進(jìn)程。因此我們?nèi)绻韵喾吹捻樞蛘{(diào)用這兩個(gè)函數(shù)調(diào)用,那么在 ftl函數(shù)調(diào)用之后,signal函數(shù)調(diào)用之前就有一小段時(shí)間程序可能接收到 SIGIO信號(hào)。一般是通過調(diào)用 ftl函數(shù)的 F_SETFL命令, O_ASYNC為參數(shù)來實(shí)現(xiàn)。一般來說是使用 ftl函數(shù)的 F_SETOWN參數(shù)來進(jìn)行設(shè)定擁有者。 ? ( 1)一個(gè)和 SIGIO信號(hào)的處理函數(shù)必須設(shè)定。有的系統(tǒng) SIGPOLL信號(hào),它也是相當(dāng)于 SIGIO的。通過使用它,當(dāng)我們的程序進(jìn)行 I/O操作的時(shí)候,內(nèi)核可以在初始化 I/O操作后立即返回,在進(jìn)行 I/O操作的同時(shí),我們的程序可以做自己的事情,直到 I/O操作結(jié)束,系統(tǒng)內(nèi)核給我們的程序發(fā)消息通知。 ? 信號(hào) I/O可以使內(nèi)核在某個(gè)文件描述符發(fā)生改變的時(shí)候發(fā)信號(hào)通知我們的程序。 ? 對(duì)于信號(hào)驅(qū)動(dòng) I/O模式,它的先進(jìn)之處在于它在等待數(shù)據(jù)的時(shí)候不會(huì)阻塞,程序可以做自己的事情。當(dāng)數(shù)據(jù)就緒的時(shí)候,系統(tǒng)會(huì)向我們的進(jìn)程發(fā)送一個(gè) SIGIO信號(hào)。 ? 使用這種模式,我們首先需要允許套接字使用信號(hào)驅(qū)動(dòng) I/O ,還要安裝一個(gè) SIGIO的處理函數(shù)。 信號(hào)驅(qū)動(dòng) I/O模式 ? 我們可以使用信號(hào),讓內(nèi)核在文件描述符就緒的時(shí)候使用 SIGIO信號(hào)來通知我們。 ? I/O多路服用技術(shù)并不只局限與
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1