資源描述:
《Winsocket編程之套接字原理》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、·[文章信息]作者:petery時間:2003-07-29出處:論壇責任編輯:方舟[文章導(dǎo)讀]在TCP/IP網(wǎng)絡(luò)中兩個進程間的相互作用的主機模式是客戶機/服務(wù)器模式......一、客戶機/服務(wù)器模式在TCP/IP網(wǎng)絡(luò)中兩個進程間的相互作用的主機模式是客戶機/服務(wù)器模式(Client/Servermodel)。該模式的建立基于以下兩點:1、非對等作用;2、通信完全是異步的??蛻魴C/服務(wù)器模式在操作過程中采取的是主動請示方式:首先服務(wù)器方要先啟動,并根據(jù)請示提供相應(yīng)服務(wù):(過程如下)1、打開一通信通道并告知本地主機,它愿意在某
2、一個公認地址上接收客戶請求。2、等待客戶請求到達該端口。3、接收到重復(fù)服務(wù)請求,處理該請求并發(fā)送應(yīng)答信號。4、返回第二步,等待另一客戶請求5、關(guān)閉服務(wù)器。客戶方:1、打開一通信通道,并連接到服務(wù)器所在主機的特定端口。2、向服務(wù)器發(fā)送服務(wù)請求報文,等待并接收應(yīng)答;繼續(xù)提出請求……3、請求結(jié)束后關(guān)閉通信通道并終止。二、基本套接字為了更好說明套接字編程原理,給出幾個基本的套接字,在以后的篇幅中會給出更詳細的使用說明。1、創(chuàng)建套接字——socket()功能:使用前創(chuàng)建一個新的套接字格式:SOCKETPASCALFARsocket(
3、intaf,inttype,intprocotol);參數(shù):af:通信發(fā)生的區(qū)域type:要建立的套接字類型procotol:使用的特定協(xié)議2、指定本地地址——bind()功能:將套接字地址與所創(chuàng)建的套接字號聯(lián)系起來。格式:intPASCALFARbind(SOCKETs,conststrUCtsockaddrFAR*name,intnamelen);·參數(shù):s:是由socket()調(diào)用返回的并且未作連接的套接字描述符(套接字號)。其它:沒有錯誤,bind()返回0,否則SOCKET_ERROR地址結(jié)構(gòu)說明:structs
4、ockaddr_in{shortsin_family;//AF_INETu_shortsin_port;//16位端口號,網(wǎng)絡(luò)字節(jié)順序structin_addrsin_addr;//32位IP地址,網(wǎng)絡(luò)字節(jié)順序charsin_zero[8];//保留}3、建立套接字連接——connect()和accept()功能:共同完成連接工作格式:intPASCALFARconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);SOCKETPASCALFARaccept(SOCKE
5、Ts,structsockaddrFAR*name,intFAR*addrlen);參數(shù):同上4、監(jiān)聽連接——listen()功能:用于面向連接服務(wù)器,表明它愿意接收連接。格式:intPASCALFARlisten(SOCKETs,intbacklog);5、數(shù)據(jù)傳輸——send()與recv()功能:數(shù)據(jù)的發(fā)送與接收格式:intPASCALFARsend(SOCKETs,constcharFAR*buf,intlen,intflags);intPASCALFARrecv(SOCKETs,constcharFAR*buf,
6、intlen,intflags);參數(shù):buf:指向存有傳輸數(shù)據(jù)的緩沖區(qū)的指針。6、多路復(fù)用——select()功能:用來檢測一個或多個套接字狀態(tài)。格式:intPASCALFARselect(intnfds,fd_setFAR*readfds,fd_setFAR*writefds,fd_setFAR*exceptfds,conststructtimevalFAR*timeout);參數(shù):readfds:指向要做讀檢測的指針writefds:指向要做寫檢測的指針exceptfds:指向要檢測是否出錯的指針timeout:最大
7、等待時間7、關(guān)閉套接字——closesocket()功能:關(guān)閉套接字s格式:BOOLPASCALFARclosesocket(SOCKETs);·2.1面向連接的套接字的系統(tǒng)調(diào)用時序圖2.2無連接協(xié)議的套接字調(diào)用時序圖2.3面向連接的應(yīng)用程序流程圖