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

正文內(nèi)容

chap4socket網(wǎng)絡(luò)通信(編輯修改稿)

2025-01-16 02:46 本頁面
 

【文章內(nèi)容簡介】 e DEST_PORT 23 int main() { int sockfd。 struct sockaddr_in dest_addr。 sockfd = socket(AF_INET, SOCK_STREAM, 0)。 = AF_INET。 = htons(DEST_PORT)。 = i_addr(DEST_IP)。 connect(sockfd, (struct sockaddr*)dest_addr, sizeof(struct sockaddr))。 32 Socket基本編程技術(shù) 33 listen()函數(shù) ?功能 ? 用于 面向連接 服務(wù)器,表明愿意接收連接 ? include sys/ ?函數(shù)原型 ? int listen(int s, int backlog)。 ?參數(shù)說明 ? sockfd:調(diào)用 socket返回的文件描述符 ? backlog: accept()應(yīng)答之前,允許在進(jìn)入隊列中等待的連接數(shù)目,出錯時返回 1 ?返回值 ? 成功時,返回 0 ? 失敗時,返回 1 ?說明 ? 在使用 listen()之前,需要調(diào)用 bind()綁定到需要的端口,否則系統(tǒng)內(nèi)核將會監(jiān)聽一個隨機(jī)端口 socket()。 bind()。 listen()。 Socket基本編程技術(shù) 34 accept()函數(shù) ?功能 ? 建立套接字連接,處理單個連接請求(如發(fā)送 /接收數(shù)據(jù)) ? include sys/ ?函數(shù)原型 ? int accept(int sockfd, struct void*addr, socklen_t *addrlen)。 ?參數(shù)說明 ? sockfd:正在監(jiān)聽端口的套接字文件描述符 ? addr:指向本地數(shù)據(jù)結(jié)構(gòu) sockaddr_in的指針 ?調(diào)用 connect()的信息將存儲在該結(jié)構(gòu)中 ? addrlen:設(shè)置為 sizeof(struct sockaddr_in) ?返回值 ? 成功時,返回一個 socket 端口 ? 失敗時,返回 1 Socket基本編程技術(shù) 35 accept()函數(shù) int main() { int sockfd, client_fd。 struct sockaddr_in remote_addr。 /* 客戶端地址信息 */ …… while(1) { sin_size = sizeof(struct sockaddr_in)。 if ((client_fd = accept(sockfd, (struct sockaddr *) remote_addr, sin_size)) == 1){ perror(accept)。 continue。 } printf(from %s\n, i_ntoa())。 …… } …… } Socket基本編程技術(shù) 36 send()函數(shù) ?功能 ? 通過 socket發(fā)送數(shù)據(jù) ? include sys/ ? include sys/ ?函數(shù)原型 ? ssize_t send(int sockfd, const void *buf, size_t len, int flags)。 ?參數(shù)說明 ? sockfd:發(fā)送數(shù)據(jù)的套接字描述符 ? msg:指向發(fā)送數(shù)據(jù)的指針 ? len:數(shù)據(jù)長度 ? flags:一般設(shè)置為 0 ?返回值 ? 成功時,返回實際發(fā)送的數(shù)據(jù)的字節(jié)數(shù) ? 失敗時,返回 1 Socket基本編程技術(shù) 37 recv()函數(shù) ?功能 ? 通過 socket接收數(shù)據(jù) ? include sys/ ? include sys/ ?函數(shù)原型 ? ssize_t recv(int sockfd, void *buf, size_t len, int flags)。 ?參數(shù)說明 ? sockfd:要讀的 SOCKET描述符 ? buf:要讀的信息的緩沖區(qū) ? len:緩沖的最大長度 ? flags:一般設(shè)置為 0 ?返回值 ? 成功時,返回實際接收到的數(shù)據(jù)的字節(jié)數(shù) ? 失敗時,返回 1 Socket基本編程技術(shù) 38 send()/recv()中的 flags說明 ? MSG_DONTROUTE ? send()的使用標(biāo)志,不查找路由表,表示目的主機(jī)在本地網(wǎng)絡(luò) ? MSG_OOB ? 接收或者發(fā)送 帶外數(shù)據(jù) ? MSG_PEEK ? recv()的使用標(biāo)志,查看數(shù)據(jù)但不從系統(tǒng)緩沖區(qū)移走數(shù)據(jù) ? MSG_WAITALL ? recv()的使用標(biāo)志,等待所有數(shù)據(jù), 阻塞式接收 ,直到滿足條件或發(fā)生錯誤 ?讀到指定字節(jié)時,正常返回,返回值等于 len ?讀到文件尾,正常返回,返回值小于 len ?操作錯誤時,返回 1 Socket基本編程技術(shù) 帶外數(shù)據(jù) ?傳輸層協(xié)議使用帶外數(shù)據(jù) (outofband, OOB)來發(fā)送一些重要數(shù)據(jù) ? 若通信一方有重要數(shù)據(jù)需要通知對方時,協(xié)議能將這些數(shù)據(jù)快速地發(fā)送到對方 ? 為發(fā)送這些數(shù)據(jù),協(xié)議一般不使用與普通數(shù)據(jù)相同的通道,而是使用另外的通道 ?Linux套接字機(jī)制支持低層協(xié)議發(fā)送 /接收帶外數(shù)據(jù),但 TCP協(xié)議沒有真正意義上的帶外數(shù)據(jù) ?為發(fā)送重要協(xié)議, TCP提供 緊急模式 機(jī)制 ? TCP協(xié)議在數(shù)據(jù)段中設(shè)置 URG位,表示進(jìn)入緊急模式 ? 接收方可以對緊急模式采取特殊的處理 ? 這種方式數(shù)據(jù)不容易被阻塞,且可通過在服務(wù)器端程序里捕捉 SIGURG信號來及時接收數(shù)據(jù) ? TCP協(xié)議每次只能發(fā)送和接收 一個字節(jié) 帶外數(shù)據(jù) 39 Socket基本編程技術(shù) TCP發(fā)送帶外數(shù)據(jù)的處理機(jī)制 ?TCP總將最后一個字節(jié)當(dāng)作 OOB數(shù)據(jù),其余當(dāng)作普通字節(jié) ? 不管通過帶 MSG_OOB標(biāo)志的 sendXXXX()函數(shù)發(fā)送多少字節(jié) OOB數(shù)據(jù),發(fā)送端只將最后一個字節(jié)當(dāng)作 OOB數(shù)據(jù) ? 接收端也只能收到一個字節(jié)的 OOB數(shù)據(jù) ?舉例: send(sendfd, ABC, 3, MSG_OOB) ? TCP將緊急模式 URG 置位 ? 緊急指針定位第三個字節(jié) (“C”) ? 前兩個字節(jié) (AB)當(dāng)作普通字節(jié)發(fā)送 40 Socket基本編程技術(shù) TCP接收帶外數(shù)據(jù)的處理機(jī)制 ?TCP提供兩種處理模式 ? 非 OOBINLINE 模式:套接字的默認(rèn)模式 ?將 OOB字節(jié)與普通字節(jié)分開存放, OOB字節(jié)存放在一個 OOB緩沖區(qū)中 ? OOBINLINE 模式: ?OOB字節(jié)和普通字節(jié)一起存放 ?recvXXXX函數(shù)在 MSG_OOB模式下,將在 OOB緩沖區(qū)中尋找數(shù)據(jù) ? 如果發(fā)送端沒發(fā)送 OOB字節(jié),它返回錯誤 ? 如果發(fā)送端發(fā)送了 OOB字節(jié) ?對于非 OOBINLINE 模式,返回 1字節(jié)的 OOB數(shù)據(jù) ?對于 OOBINLINE 模式,返回錯誤,因為 OOB字節(jié)沒有放到 OOB緩沖區(qū)中 41 Socket基本編程技術(shù) 42 sendto()函數(shù) ?功能 ? 用于 數(shù)據(jù)報套接字 的通信 ? include sys/ ? include sys/ ?函數(shù)原型 ? int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen)。 ?參數(shù)說明 ? to:目地機(jī)的 IP地址和端口號信息 ? tolen:常被賦值為 sizeof (struct sockaddr) ?返回值 ? 成功時,返回實際發(fā)送的數(shù)據(jù)的字節(jié)數(shù) ? 失敗時,返回 1 Socket基本編程技術(shù) 43 recvfrom()函數(shù) ?功能 ? 用于 數(shù)據(jù)報套接字 的通信 ? include sys/ ? include sys/ ?函數(shù)原型 ? int recvfrom(int sockfd,void *buf, int len, unsigned int
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1