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

正文內(nèi)容

tcp-ipsocket網(wǎng)絡(luò)編程-資料下載頁

2025-01-19 08:36本頁面
  

【正文】 接字進(jìn)行 I/O操作時,無論操作成功與否,調(diào)用都會立即返回。 ? 阻塞方式編程簡單,一個套接口的默認(rèn)操作模式為阻塞,可以調(diào)用函數(shù) ioctlsocket()進(jìn)行設(shè)置。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 73/83 并發(fā)服務(wù)器 W S A S t a r t u p ( )s o c k e t ( )b i n d ( )l i s t e n ( )a c c e p t ( )c l o s e s o c k e t ( )W S A C l e a n u p ( )等 待 客 戶 連 接 請 求 的 到 來服 務(wù) 器 端r e c v ( )s e n d ( )c l o s e s o c k e t ( )C r e a t e T h r e a d ( )派 生 線 程主 進(jìn) 程 在 a c c e p t 之 后 派生 新 線 程 , 然 后 主 進(jìn) 程繼 續(xù) l i s t e n , 處 理 新 的 連接 請 求 , 新 線 程 自 行 和客 戶 端 通 信2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 74/83 基于 TCP的客戶 /服務(wù)器-服務(wù)器代碼 // : 定義控制臺應(yīng)用程序的入口點(diǎn)。 include include include include define DEFAULT_PORT 5050 //服務(wù)端默認(rèn)端口 int _tmain(int argc, char* argv[]) { int iPort = DEFAULT_PORT。 WSADATA wsaData。 SOCKET sListen,sAccept。 int iLen。 //客戶地址長度 int iSend。//發(fā)送數(shù)據(jù)長度 char buf[] = I am a server。//要發(fā)送給客戶的信息 struct sockaddr_in ser,cli。//服務(wù)器和客戶的地址 if(WSAStartup(MAKEWORD(2,2),amp。wsaData)!=0) { printf(Failed to load Winsock.\n)。 return 1。 } 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 75/83 基于 TCP的客戶 /服務(wù)器-服務(wù)器代碼 sListen = socket(AF_INET,SOCK_STREAM,0)。//創(chuàng)建服務(wù)器端套接口 if(sListen == INVALID_SOCKET) { printf(socket() Failed: %d\n,WSAGetLastError())。 return 1。 } //以下建立服務(wù)器端地址 //使用 IP地址族 = AF_INET。 //使用 htons()把雙字節(jié)主機(jī)序端口號轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序端口號 = htons(iPort)。 //htonl()把一個四字節(jié)主機(jī)序 IP地址轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序主機(jī)地址 //使用系統(tǒng)指定的 IP地址 INADDR_ANY = htonl(INADDR_ANY)。 //bind()函數(shù)進(jìn)行套接定與地址的綁定 if(bind(sListen,(LPSOCKADDR)amp。ser,sizeof(ser)) == SOCKET_ERROR) { printf(bind() Failed: %d\n,WSAGetLastError())。 return 1。 } 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 76/83 基于 TCP的客戶 /服務(wù)器-服務(wù)器代碼 //進(jìn)入監(jiān)聽狀態(tài) if(listen(sListen,5) == SOCKET_ERROR) { printf(lisiten() Failed: %d\n,WSAGetLastError())。 return 1。 } //初始化客戶地址長度參數(shù) iLen = sizeof(cli)。 //進(jìn)入一個無限循環(huán),等待客戶的連接請求 while(1) { sAccept = accept(sListen,(struct sockaddr *)amp。cli,amp。iLen)。 if(sAccept == INVALID_SOCKET) { printf(accept() Failed: %d\n,WSAGetLastError())。 return 1。 } //輸出客戶 IP地址和端口號 printf(Accepted client IP:[%s],port:[%d]\n,i_ntoa(),ntohs())。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 77/83 基于 TCP的客戶 /服務(wù)器-服務(wù)器代碼 //給連接的客戶發(fā)送信息 iSend = send(sAccept,buf,sizeof(buf),0)。 if(iSend == SOCKET_ERROR) { printf(send() Failed: %d\n,WSAGetLastError())。 break。 } else if(iSend == 0) { break。 } else { printf(send() byte: %d\n,iSend)。 } closesocket(sAccept)。 } closesocket(sListen)。 WSACleanup()。 return 0。 } 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 78/83 基于 TCP的客戶 /服務(wù)器-客戶端代碼 // : 定義控制臺應(yīng)用程序的入口點(diǎn)。 include include include include define DATA_BUFFER 1024 //默認(rèn)緩沖區(qū)大小 int _tmain(int argc, char * argv[]) { WSADATA wsaData。 SOCKET sClient。 int iPort = 5050。 int iLen。//從服務(wù)器端接收的數(shù)據(jù)長度 char buf[DATA_BUFFER]。//接收數(shù)據(jù)的緩沖區(qū) struct sockaddr_in ser。//服務(wù)器端地址 //判斷參數(shù)輸入是否正確: client [Server IP] if(argc2) { //提示在命令行中輸入服務(wù)器 IP地址 printf(Usage: client [server IP address]\n)。 return 1。 } 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 79/83 基于 TCP的客戶 /服務(wù)器-客戶端代碼 memset(buf,0,sizeof(buf))。//接收緩沖區(qū)初始化 if(WSAStartup(MAKEWORD(2,2),amp。wsaData)!=0) { printf(Failed to load Winsock.\n)。 return 1。 } //填寫要連接的服務(wù)器地址信息 = AF_INET。 = htons(iPort)。 //i_addr()將命令行中輸入的點(diǎn)分 IP地址轉(zhuǎn)換為二進(jìn)制表示的網(wǎng)絡(luò)字節(jié)序 IP地址 = i_addr(argv[1])。 //建立客戶端流式套接口 sClient = socket(AF_INET,SOCK_STREAM,0)。 if(sClient == INVALID_SOCKET) { printf(socket() Failed: %d\n,WSAGetLastError())。 return 1。 } 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 80/83 基于 TCP的客戶 /服務(wù)器-客戶端代碼 //請求與服務(wù)器端建立 TCP連接 if(connect(sClient,(struct sockaddr *)amp。ser,sizeof(ser)) == INVALID_SOCKET) { printf(connect() Failed: %d\n,WSAGetLastError())。 return 1。 } else { //從服務(wù)器端接收數(shù)據(jù) iLen = recv(sClient,buf,sizeof(buf),0)。 if(iLen == 0) return 1。 else if(iLen == SOCKET_ERROR) { printf(recv() Failed: %d\n,WSAGetLastError())。 return 1。 } else printf(recv() data from server: %s\n,buf)。 } 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 81/83 基于 TCP的客戶 /服務(wù)器-客戶端代碼 closesocket(sClient)。 WSACleanup()。 return 0。 } 服務(wù)器端 客戶端 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 82/83 高級網(wǎng)絡(luò)編程 API ? MFC編程技術(shù)定義了用于網(wǎng)絡(luò)編程的 Winsock類,類名為 CAsyncSocket;還定義了一個派生于 CAsyncSocket的 CSocket類。這兩個類簡單實用,用戶可以使用它們來實現(xiàn)自己的網(wǎng)絡(luò)程序。 ? 與前面的介紹相似,使用 MFC的 Winsock類進(jìn)行操作時需要使用 、 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 83/83 課后習(xí)題 ? 使用 UDP數(shù)據(jù)報套接字改寫示例程序。 ? 實現(xiàn)一個簡單的具有聊天室功能的服務(wù)器以及相應(yīng)的客戶端,可以使用 UDP也可以使用TCP。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1