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

正文內(nèi)容

第5章網(wǎng)絡(luò)軟件開發(fā)技術(shù)—編程篇-資料下載頁(yè)

2025-07-20 11:42本頁(yè)面
  

【正文】 Sendto() Blocks until data received Process reply recvfrom() 8/17/2022 60 無(wú)連接協(xié)議的 Socket 調(diào)用 ? 換句話說, client 等待數(shù)據(jù) , 但是并不檢測(cè)誰(shuí)發(fā)送的數(shù)據(jù) Server Socket() Bind() Recvfrom() Blocks until data received Process request Sendto() Client Socket() Bind() Sendto() Blocks until data received Process reply recvfrom() close() close() 8/17/2022 61 創(chuàng)建 UDP socket SOCKET socket(int family,int type,int protocol)。 SOCKET sock。 sock = socket( AF_INET, SOCK_DGRAM, 0)。 8/17/2022 62 服務(wù)器綁定地址 SOCKET s。 sockaddr_in addr。 s = socket(AF_INET, SOCK_DGRAM, 0)。 = AF_INET。 = htons(2022)。 = htonl(INADDR_ANY)。 if (bind(s, (sockaddr*)amp。addr, sizeof(addr)) == SOCKET_ERROR) { // 錯(cuò)誤處理 } Fill in addr 8/17/2022 63 Basic Socket Calls (sendto) // Berkeley form int sendto(int s, const char* bytesToSend, int nBytes, int flags, struct sockaddr *to, int sizeOfSockaddr)。 // WinSock form int sendto(SOCKET s, const char* bytesToSend, int nBytes, int flags, struct sockaddr *to, int sizeOfSockaddr)。 8/17/2022 64 sendto (續(xù) ) int sendto (SOCKET s, const char* bytesToSend, int nBytes, int flags struct sockaddr *to, int sizeOfSockaddr)。 ? to是指向接收者地址的指針 ? sizeOfSockaddr is sizeof(struct sockaddr_in) ? 當(dāng)調(diào)用成功, sendto()返回被成功發(fā)送的字節(jié)數(shù);當(dāng)調(diào)用失敗,返回 SOCKET_ERROR ? 需要說明兩點(diǎn):第一,由于 UDP是不可靠的,因此 sendto()的成功返回并不代表數(shù)據(jù)被成功發(fā)送到了目標(biāo)地址,甚至不能保證數(shù)據(jù)已經(jīng)從本機(jī)發(fā)出;第二, sendto()一次發(fā)送的數(shù)據(jù)大小是有上限的,至少要小于 IP包的大?。s 64K) 8/17/2022 65 sendto()的典型用法 ? define BUFSIZE 1024 ? SOCKET s。 ? sockaddr_in addr。 ? char buf[BUFSIZE]。 ? int bufLen。 ? int bytesSent。 ? s = socket(AF_INET, SOCK_DGRAM, 0)。 ? if (s == INVALID_SOCKET) ? { ? //錯(cuò)誤處理 ... ? } ? else ? { ? // 填充接收者的地址 ? = AF_INET。 ? = htons(2022)。 ? = i_addr()。 ? // 填充待發(fā)數(shù)據(jù)到緩沖區(qū) ? strcpy(buf, Hello, World!)。 ? bufLen = strlen(buf)。 ? // 發(fā)送數(shù)據(jù)報(bào) ? bytesSent = sendto(s, buf, bufLen, 0, (sockaddr*)amp。addr, sizeof(addr))。 ? if (bytesSent == SOCKET_ERROR) ? { ? //錯(cuò)誤處理 ... ? } ? closesocket(s)。 ? } 8/17/2022 66 Basic Socket Calls (recvfrom) // Berkeley form int recvfrom(int s char* receivedData, int nBytes, int flags, struct sockaddr *from, int sizeOfSockaddr)。 // WinSock form int recvfrom(SOCKET s, char* receivedBytes, int nBytes, int flags, struct sockaddr *from, int sizeOfSockaddr)。 8/17/2022 67 recvfrom (續(xù) ) int recvfrom (SOCKET s, char* receivedData, int nBytes, int flags struct sockaddr *from, int sizeOfSockaddr)。 ? from是指向數(shù)據(jù)發(fā)送者地址的指針 ? sizeOfSockaddr is sizeof(struct sockaddr_in) ? 當(dāng)調(diào)用成功, recvfrom()返回被接收的字節(jié)數(shù);當(dāng)調(diào)用失敗,返回 SOCKET_ERROR。這里要說明,如果返回 0,并不說明有錯(cuò)誤發(fā)生,而是讀取了一個(gè)純 UDP報(bào)文頭。如果接收到的數(shù)據(jù)報(bào)比提供的接收緩沖區(qū)要大,那么會(huì)出現(xiàn) WSAEMSGSIZE錯(cuò)誤。 8/17/2022 68 recvfrom()的典型用法 ? define BUFSIZE 1024 ? SOCKET s。 ? sockaddr_in addr。 // 本 Socket地址結(jié)構(gòu) ? char buf[BUFSIZE]。 // 接收緩沖區(qū) ? int bytesRecv。 ? sockaddr_in addrFrom。 // 發(fā)送方地址結(jié)構(gòu) ? int addrFromLen = sizeof(addrFrom)。 // 發(fā)送方地址結(jié)構(gòu)長(zhǎng)度 ? in_addr inFrom。 // 發(fā)送方 IP地址 ? s = socket(AF_INET, SOCK_DGRAM, 0)。 ? if (s == INVALID_SOCKET) ? { ? //錯(cuò)誤處理 ... ? } 8/17/2022 69 ? else ? { ? // 填充本地地址結(jié)構(gòu)以便從中讀取數(shù)據(jù) ? = AF_INET。 ? = htons(2022)。 ? = htonl(INADDR_ANY)。 ? // 綁定 socket ? if (bind(s, (sockaddr*)amp。addr, sizeof(addr)) == SOCKET_ERROR) ? { ? //錯(cuò)誤處理 ... ? } ? else ? { ? bytesRecv = recvfrom(s, buf, BUFSIZE, 0, ? (sockaddr*)amp。addrFrom, amp。addrFromLen)。 ? if (bytesRecv == SOCKET_ERROR) ? { ? //錯(cuò)誤處理 ... ? } ? else ? { ? // 處理得到的數(shù)據(jù) ... ? memcpy(amp。inFrom, amp。, 4)。 ? printf(服務(wù)器從地址 %s, 端口為 %d 的客戶端收到字節(jié)數(shù) %d , ? i_ntoa(inFrom), ntohs(), bytesRecv)。 ? } ? } ? closesocket(s)。 ? } 8/17/2022 70 Example ? 使用的是無(wú)連接的數(shù)據(jù)報(bào) socket完成和 的示例同樣的功能。 8/17/2022 71 實(shí)例 — 從 Web服務(wù)器下載文件 Method URL CR LF Sp CR LF 簡(jiǎn)單 HTTP請(qǐng)求的格式
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1