Posted on 2012-06-04 12:24
C小加 閱讀(1754)
評論(0) 編輯 收藏 引用 所屬分類:
網(wǎng)絡(luò)編程
面向連接的Socket通信是基于TCP的。網(wǎng)絡(luò)中的兩個進(jìn)程以客戶機(jī)/服務(wù)器模式進(jìn)行通信
服務(wù)器程序要先于客戶機(jī)程序啟動,每個步驟中調(diào)用的Socket函數(shù)如下:
(1)調(diào)用WSAStartup()函數(shù)加載Windows Sockets動態(tài)庫,然后調(diào)用socket()函數(shù)創(chuàng)建一個流式套接字,返回套接字號s。
(2)調(diào)用bind()函數(shù)將套接字s綁定到一個已知的地址,通常為本地IP地址。
(3)調(diào)用listen()函數(shù)將套接字s設(shè)置為偵聽模式,準(zhǔn)備好接收來自各個客戶機(jī)的連接請求。
(4)調(diào)用accept()函數(shù)等待接受客戶端的連接請求。
(5)如果接收到客戶端的請求,則accept()函數(shù)返回,得到新的套接字ns。
(6)調(diào)用recv()函數(shù)接收來自客戶端的數(shù)據(jù),調(diào)用send()函數(shù)向客戶端發(fā)送數(shù)據(jù)。
(7)與客戶端的通信結(jié)束后,服務(wù)器程序可以調(diào)用shutdown()函數(shù)通知對方不再發(fā)送或接收數(shù)據(jù),也可以由客戶端程序斷開連接。斷開連接后,服務(wù)器進(jìn)程調(diào)用closesocket()函數(shù)關(guān)閉套接字ns。此后服務(wù)器程序返回第4步,繼續(xù)等待客戶端進(jìn)程的連接。
(8)如果要退出服務(wù)器程序,則調(diào)用closesocket()函數(shù)關(guān)閉最初的套接字s。
客戶端程序在每一步驟中使用的函數(shù)如下:
(1)調(diào)用WSAStartup()函數(shù)加載Windows Sockets動態(tài)庫,然后調(diào)用socket()函數(shù)創(chuàng)建一個流式套接字,返回套接字號s。
(2)調(diào)用connect()函數(shù)將套接字s連接到服務(wù)器。
(3)調(diào)用send()函數(shù)向服務(wù)器發(fā)送數(shù)據(jù),調(diào)用recv()函數(shù)接收來自服務(wù)器的數(shù)據(jù)。
(4)與服務(wù)器的通信結(jié)束后,客戶端程序可以調(diào)用shutdown()函數(shù)通知對方不再發(fā)送或接收數(shù)據(jù),也可以由服務(wù)器程序斷開連接。斷開連接后,客戶端進(jìn)程調(diào)用closesocket()函數(shù)關(guān)閉套接字。