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