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

正文內(nèi)容

tcp-ipsocket網(wǎng)絡(luò)編程(編輯修改稿)

2025-02-15 08:36 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 在一起, bind()函數(shù)用于完成這樣的綁定。 int bind( SOCKET s, const struct sockaddr FAR * name, int namelen )。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 42/83 bind()參數(shù)說明 ? s標(biāo)識(shí)一個(gè)未綁定的套接口描述字,它是 socket()函數(shù)調(diào)用成功時(shí)返回的值 ? name是一個(gè)與指定協(xié)議有關(guān)的地址結(jié)構(gòu)指針,存儲(chǔ)了套接口的地址信息, Winsock中使用 sockaddr_in結(jié)構(gòu)指定 IP地址和端口信息 struct sockaddr_in{ short sin_family。 u_short sin_port。 struct in_addr sin_addr。 char sin_zero[8]。 } sin_family一般為 AF_INET,表示使用 IP地址族; sin_port是以網(wǎng)絡(luò)字節(jié)序表示的16位端口號(hào); sin_addr是網(wǎng)絡(luò)字節(jié)序的 32位 IP地址; sin_zero字段一般不用,用 0填充 ? namelen表示地址參數(shù) (name)的長度 ? IP地址參數(shù)為 INADDR_ANY,則由系統(tǒng)內(nèi)核來自動(dòng)指定,port為 0,則由系統(tǒng)自動(dòng)指派一個(gè) 1024~5000之間惟一的端口號(hào) 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 43/83 bind()實(shí)例 include SOCKET s。 sockaddr_in tcpaddr。 int iSockErr。 int port=5000。 //端口號(hào) s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)。 =AF_INET。 =htons(port)。 =htonl(INADDR_ANY)。 if(bind(s,(LPSOCKADDR)amp。tcpaddr,sizeof(tcpaddr))==SOCKET_ERROR){ iSockErr=WSAGetLastError()。 //根據(jù)不同的錯(cuò)誤類型進(jìn)行不同的處理 return。 } 函數(shù)調(diào)用成功,進(jìn)行其他處理。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 44/83 服務(wù)器端啟動(dòng)監(jiān)聽- listen()函數(shù) ? 在一個(gè)服務(wù)器端用 socket()調(diào)用成功創(chuàng)建了一個(gè)套接口,并用 bind()函數(shù)和一個(gè)指定的地址關(guān)聯(lián)后,就需要指示該套接口進(jìn)入監(jiān)聽連接請(qǐng)求狀態(tài),這需要通過 listen()函數(shù)來實(shí)現(xiàn) int listen( SOCKET s, int backlog )。 s代表一個(gè)已綁定了地址,但還未建立連接的套接口描述字 backlog指定了正在等待連接的最大隊(duì)列長度 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 45/83 客戶端請(qǐng)求連接- connect()函數(shù) ? 當(dāng)服務(wù)器端建立好套接口并與一個(gè)本地地址綁定后,就進(jìn)入監(jiān)聽狀態(tài),等待客戶發(fā)出連接請(qǐng)求。在客戶端套接口建立好之后,就調(diào)用 connect()函數(shù)來與服務(wù)器建立連接。 int connect( SOCKET s, const struct sockaddr FAR * name, int namelen )。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 46/83 connect()函數(shù)參數(shù)說明 ? s將要建立連接的套接口描述字 ? name是一個(gè)指向遠(yuǎn)端套接口地址結(jié)構(gòu)(sockaddr_in)的指針,表示 s套接口欲與其建立一條連接 ? namelen是服務(wù)器端的地址長度,即 name的長度 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 47/83 Connect()函數(shù)的說明 ? 在客戶端使用該函數(shù)請(qǐng)求建立連接時(shí),將激活建立連接的三次握手,用來建立一條到服務(wù)器 TCP的連接。如果調(diào)用該函數(shù)前沒有調(diào)用 bind()來綁定本地地址,則由系統(tǒng)隱式綁定一個(gè)地址到該套接口 ? 該函數(shù)用在 UDP的客戶端時(shí), connect()函數(shù)并不是真正地發(fā)出建立請(qǐng)求連接的請(qǐng)求,調(diào)用將從本地操作系直接返回。這樣可以將服務(wù)器的地址信息保存下來,在后續(xù) UDP端口發(fā)送數(shù)據(jù)時(shí),由套接口自動(dòng)在發(fā)送函數(shù)中填入服務(wù)器地址,而不需要由應(yīng)用程序在調(diào)用發(fā)送函數(shù)時(shí)填入 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 48/83 服務(wù)器端接受連接- accept()函數(shù) ? 在服務(wù)器端通過 listen()函數(shù)調(diào)用表示服務(wù)器進(jìn)入監(jiān)聽客戶的連接請(qǐng)求狀態(tài),而在服務(wù)器端調(diào)用 accept()函數(shù)時(shí)表示可以接收來自客戶端由 connect()發(fā)出的連接請(qǐng)求,雙方進(jìn)入連接狀態(tài)。 SOCKET accept( SOCKET s, struct sockaddr FAR * addr, int FAR * addrlen )。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 49/83 accept()函數(shù)參數(shù)說明 ? s標(biāo)識(shí)一個(gè)套接字,該套接口處于監(jiān)聽狀態(tài) ? addr是一個(gè)地址結(jié)構(gòu)的指針,用來存放發(fā)出連接請(qǐng)求的那個(gè)客戶機(jī)的 IP地址信息 ? addrlen指出客戶套接口地址結(jié)構(gòu)的長度 ? 函數(shù)說明 :該函數(shù)用于面向連接的服務(wù)器端,在 IP協(xié)議族中,只用于 TCP服務(wù)器端 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 50/83 發(fā)送數(shù)據(jù) send()函數(shù) ? 在已經(jīng)建立連接的套接口上發(fā)送數(shù)據(jù),可以使用 send()函數(shù) int send( SOCKET s, const char FAR * buf, int len, int flags )。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 51/83 send()函數(shù)參數(shù)說明 ? s用于標(biāo)識(shí)已建立連接的套接字 ? buf是一個(gè)字符緩沖區(qū),內(nèi)有將要發(fā)送的數(shù)據(jù) ? len即將發(fā)送的緩沖區(qū)中的字符數(shù) ? flags用于控制數(shù)據(jù)傳輸方式, 0表示按正常方式發(fā)送數(shù)據(jù);宏 MSG_DONTROUTE說明系統(tǒng)目標(biāo)主機(jī)就在直接連接的本地網(wǎng)絡(luò)中,無需路由選擇;MSG_OOB指出數(shù)據(jù)是按帶外數(shù)據(jù)發(fā)送的 ? 函數(shù)說明 : send()函數(shù)適用于已建立連接的數(shù)據(jù)報(bào)或流式套接口發(fā)送數(shù)據(jù),對(duì)于數(shù)據(jù)報(bào)類型套接口必須注意發(fā)送數(shù)據(jù)長度不大于通信子網(wǎng)的 IP包最大長度 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 52/83 接收數(shù)據(jù)- recv()函數(shù) ? 對(duì)于已建立連接的套接口來說,要從套接口上接收數(shù)據(jù),就要使用 recv()函數(shù)。 int recv( SOCKET s, char FAR * buf, int len, int flags )。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 53/83 recv()函數(shù)參數(shù)說明 ? s為已建立連接的套接口 ? buf為用于接收數(shù)據(jù)的緩沖區(qū) ? len為緩沖區(qū)的長度 ? flags指定調(diào)用的方式。 0表示接收的是正常數(shù)據(jù),無特殊行為。 MSG_PEEK表示會(huì)使有用的數(shù)據(jù)復(fù)制到所提供的接收端緩沖區(qū)內(nèi),但是沒有從系統(tǒng)緩沖區(qū)中將數(shù)據(jù)刪除。MSG_OOB表示處理帶外數(shù)據(jù)。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 54/83 無連接的套接口上接收數(shù)據(jù) recvfrom() ? 對(duì)于無連接的套接口來說,要從套接口上接收一個(gè)數(shù)據(jù)報(bào)并保存發(fā)送數(shù)據(jù)的源地址,就要使用recvfrom()函數(shù)。 int recvfrom( SOCKET s, char FAR * buf, int len, int flags, struct sockaddr FAR * from, int FAR * fromlen )。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 55/83 recvfrom()函數(shù)參數(shù)說明 ? s標(biāo)識(shí)一個(gè)套接口的描述字 ? buf接收數(shù)據(jù)的緩沖區(qū) ? len接收數(shù)據(jù)緩沖區(qū)的長度 ? flags調(diào)用操作方式,同 recv()中的 flags ? from可選指針,指向裝有源地址的緩沖區(qū) ? fromlen可選指針,指向 from緩沖區(qū)的長度值 ? 函數(shù)說明 :該函數(shù)的用法與有連接時(shí) recv()的用法一致,要注意的是該函數(shù)也可以用于有連接時(shí)數(shù)據(jù)的接收 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 56/83 在無連接套接口上發(fā)送數(shù)據(jù) sendto() ? 對(duì)于無連接的套接口來說,要從套接口上發(fā)送一個(gè)數(shù)據(jù)報(bào),就要使用 sendto()函數(shù) int sendto( SOCKET s, const char FAR * buf, int len, int flags, const struct sockaddr FAR * to, int tolen )。 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 57/83 sendto()函數(shù)參數(shù)說明 ? s本機(jī)的套接字 ? buf待發(fā)送數(shù)據(jù)的緩沖區(qū) ? len指明 buf緩沖區(qū)中要發(fā)送的數(shù)據(jù)長度 ? flags調(diào)用方式標(biāo)志位,同 send()中的 flags ? to可選指針,指向接收數(shù)據(jù)的目的套接口地址 ? tolen是 to所指的地址的長度 ? 函數(shù)說明 :該函數(shù)的使用方法類似 send()函數(shù),當(dāng)用于無連接套接字接口,調(diào)用函數(shù)前要設(shè)置,指出目標(biāo) IP地址和目標(biāo)端口號(hào)。如果用于有連接的套接口時(shí),則不能指定目標(biāo)地址和目標(biāo)端口,將 to設(shè)置為空,地址長度設(shè)為 0。當(dāng)然在有連接的情況下很少使用該函數(shù) 2022/2/14 TCP/IP Socket網(wǎng)絡(luò)編程 58/83 關(guān)閉讀寫通道 shutdown()函數(shù) ? 在一個(gè)套接口上的讀寫操作完成后,應(yīng)該首先使用 shutdown()函
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1