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

正文內(nèi)容

網(wǎng)絡(luò)編程(參考版)

2025-08-04 13:50本頁(yè)面
  

【正文】 ? } 8/18/2022 68 Example ? 使用的是無(wú)連接的數(shù)據(jù)報(bào) socket完成和 示例同樣的功能。 ? printf(服務(wù)器從地址 %s, 端口為 %d 的客戶端收到字節(jié)數(shù) %d , ? i_ntoa(inFrom), ntohs(), bytesRecv)。inFrom, amp。addrFromLen)。addr, sizeof(addr)) == SOCKET_ERROR) ? { ? //錯(cuò)誤處理 ... ? } ? else ? { ? bytesRecv = recvfrom(s, buf, BUFSIZE, 0, ? (sockaddr*)amp。 ? = htonl(INADDR_ANY)。 ? if (s == INVALID_SOCKET) ? { ? //錯(cuò)誤處理 ... ? } 8/18/2022 67 ? else ? { ? // 填充本地地址結(jié)構(gòu)以便從中讀取數(shù)據(jù) ? = AF_INET。 // 發(fā)送方地址結(jié)構(gòu)長(zhǎng)度 ? in_addr inFrom。 ? sockaddr_in addrFrom。 // 本 Socket地址結(jié)構(gòu) ? char buf[BUFSIZE]。 8/18/2022 66 recvfrom()的典型用法 ? define BUFSIZE 1024 ? SOCKET s。這里要說(shuō)明,如果返回 0,并不說(shuō)明有錯(cuò)誤發(fā)生,而是讀取了一個(gè)純 UDP報(bào)文頭。 8/18/2022 65 recvfrom (續(xù) ) int recvfrom (SOCKET s, char* receivedData, int nBytes, int flags struct sockaddr *from, int sizeOfSockaddr)。 ? } 8/18/2022 64 Basic Socket Calls (recvfrom) // Berkeley form int recvfrom(int s char* receivedData, int nBytes, int flags, struct sockaddr *from, int sizeOfSockaddr)。addr, sizeof(addr))。 ? bufLen = strlen(buf)。 ? = i_addr()。 ? if (s == INVALID_SOCKET) ? { ? //錯(cuò)誤處理 ... ? } ? else ? { ? // 填充接收者的地址 ? = AF_INET。 ? int bytesSent。 ? char buf[BUFSIZE]。 ? to是指向接收者地址的指針 ? sizeOfSockaddr is sizeof(struct sockaddr_in) ? 當(dāng)調(diào)用成功, sendto()返回被成功發(fā)送的字節(jié)數(shù);當(dāng)調(diào)用失敗,返回 SOCKET_ERROR ? 需要說(shuō)明兩點(diǎn):第一,由于 UDP是不可靠的,因此 sendto()的成功返回并不代表數(shù)據(jù)被成功發(fā)送到了目標(biāo)地址,甚至不能保證數(shù)據(jù)已經(jīng)從本機(jī)發(fā)出;第二, sendto()一次發(fā)送的數(shù)據(jù)大小是有上限的,至少要小于 IP包的大?。s 64K) 8/18/2022 63 sendto()的典型用法 ? define BUFSIZE 1024 ? SOCKET s。 // WinSock form int sendto(SOCKET s, const char* bytesToSend, int nBytes, int flags, struct sockaddr *to, int sizeOfSockaddr)。 if (bind(s, (sockaddr*)amp。 = htons(2022)。 s = socket(AF_INET, SOCK_DGRAM, 0)。 8/18/2022 60 服務(wù)器綁定地址 SOCKET s。 SOCKET sock。然后,雙方程序都結(jié)束運(yùn)行。 Return code (SOCKET_ERROR if error) Socket ID returned by socket function closesocket ( ) 函數(shù) 8/18/2022 51 Example ? 使用流式 Socket的簡(jiǎn)單應(yīng)用,它包括客戶和服務(wù)器兩個(gè)程序。 p += ret。 // 給 buf填充 4096字節(jié)的待發(fā)數(shù)據(jù) ... // 這里假設(shè) s是已經(jīng)連接的流式 Socket... while (left 0) { ret = send(s, p, left, 0)。 int left = BUFSIZE。也許需要循環(huán)調(diào)用 send()來(lái)得到需要的結(jié)果。 ? s是已經(jīng)連接的 Socket ? bytesToSend指向待發(fā)送數(shù)據(jù)緩沖區(qū)的指針 ? nBytes是待發(fā)送數(shù)據(jù)的字節(jié)數(shù) ? flags ? ., MSG_OOB ? 注意 : send()并不保證發(fā)送所有請(qǐng)求的數(shù)據(jù)。 // WinSock form int send (SOCKET s, const char* bytesToSend, int nBytes, int flags)。 } 8/18/2022 46 int status = send (socket_id, out_buffer, MAX_BUFFER_SIZE, 0)。 if (ret == SOCKET_ERROR) { //錯(cuò)誤處理 } left = ret。 char* p = buf。 ? } ? else ? { ? // 處理緩沖區(qū)的數(shù)據(jù) ? } 8/18/2022 45 define BUFSIZE 4096 char buf[BUFSIZE]。 ? } ? else if(bytesRecv == 0) ? { ? printf(對(duì)方已經(jīng)關(guān)閉連接 .)。 ? // 創(chuàng)建 socket并連接服務(wù)器 ? // ... ? bytesRecv = recv(s, buf, BUFSIZE, 0)。 ? char buf[BUFSIZE]。也許需要循環(huán)調(diào)用 recv()來(lái)得到需要的結(jié)果。 ? 注意 : recv()并不保證接收到所有請(qǐng)求的數(shù)據(jù)。 8/18/2022 43 recv (續(xù) ) int recv (SOCKET s, char* bytesToReceive, int nBytes, int flags)。 Return code (SOCKET_ERROR if error) Always 0 The maximum buffer size 接收數(shù)據(jù)的 緩 沖區(qū)的指 針 Example: char in_buffer [MAX_BUFFER] Socket ID returned by socket function On success, the number of bytes received recv ( ) 函數(shù) 8/18/2022 42 Basic Socket Calls (recv) // Berkeley form int recv(int s char* bytesToReceive, int nBytes, int flags)。serverAddr, sizeof(serverAddr))== SOCKET_ERROR) ? { ? printf(connect () 失敗,錯(cuò)誤碼 : %d, WSAGetLastError())。 ? = i_addr()。 ? = AF_INET。 ? sockaddr_in serverAddr。 8/18/2022 39 connect (續(xù) ) int connect (SOCKET sockfd, struct sockaddr* addr, int addrLen)。 sockaddr_in 結(jié) 構(gòu), 描述服 務(wù) 器的端口和 IP 地址 Sockaddr_in 結(jié) 構(gòu)的字 節(jié)長(zhǎng) 度 Return code (SOCKET_ERROR if error) Socket ID returned by socket fun
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1