?? d068.bmp.txt
字號:
第3章Socket通信編程實例
3.1 套接字概述
套接字( Socket)最初是由加利福尼亞大學Berkeley分校為UNIX操作系統開發的網絡
通信接口,是為了將TCPfIP協議集成到UNIX系統中而形成的TCP/IP應用程序接口(API)。
當為客戶機/服務器開發一個特殊的應用程序時,可以在客戶機/服務器的兩端各申請一個
Socket,通過其來交換數據結構或者數據包。因此,Socket是通信端點的一種抽象,它提供
了一種發送和接收數據的機制。
1991年,由Microsoft聯合其他幾家公司共同制定了一套Windows環境下的網絡編程
接口,使之成為Windows系統下標準、通用的TCP/IP編程接口,并使之類似于UNIX下的
Socket,以便能兼容以往Intemet下的產品。.1994年,它正式被制定為標準,被稱為Windows
Sockets規范,.又稱Winsock,并通過C語言的動態鏈接庫(dll文件)方式提供給用戶。現
在,Windows平臺下的Intemet軟件都是在Winsock的基礎上開發的。目前實際應用中的
Mndows Sockets規范主要有1.1版和2.0版。最初Winsock l.1舨是專門為Intemet設計的,
故其只支持TCP/IP協議。現在的2.x版己經不再僅限于Intemet和TCP/ IP協議。它通過提
供擴展的API編程接口,把自己的應用范圍擴大到現存的和正在出現的各種網絡和協議,包
括.PSTN、ISDN、無線網、所有的局域網協議、異步傳輸模式Al'M等。
套接字是通信端點盼一種抽象,它提供了一種發送和接收數據的機制。Winsock提供了
兩種形式的Socket:數據報套接字一(Datagram Sockets)和流式套接字(Stream Sockets)。流
式(也稱面向連接方式)套接字采用的是TCP協議,它提供了雙向的、有序的、無重復并
且無記錄邊界的數據流服務。在這種方式下,兩個通信的應用程序之間先要建立一種虛擬的
連接。流式套接字的特點是通信可靠,對數據有校驗和重發的機制,通常用來作數據文件的
傳輸,如ftp、telnet等,適合于大量數據的傳輸。數據報套接字采用的是UDP協議,它建
立在lP協議上,提供無連接數據報傳輸,支持雙向的數據流,但并不保證是可靠、有序、
無重復的。也就是說,一個從數據報套接字接收信息的進程有可能發現信息重復了,或者和
發出時的順序不同。數據撮文方式由于取消了重發校驗機制,能夠達到較高的通信速率,可
以用作一些對數據可靠性要求不高的通信,如實時的語音、圖像傳輸等。
選擇使用流式套接字還是使用數據報套接字,對通信效率影響較大。在編程中,流式套
接字與數據報套接字是有區別的。在流式套接字中,服務器首先啟動,通過調用socket0建
立一個套接字,然后調用bind()將該套接字和本地網絡地址聯系在一起,再調用listen()使套
接字做好偵聽的準備,并規定它的請求隊列的長度,之后就調用accept()來接收連接。客戶
在建立套接字后就可調用connect()和服務器建立連接。連接一旦建立,客戶機和服務器之間
就可以調用receive()和send()來發送和接收數據。最后,當數據傳送結束后,雙方調用close()
關閉套接字,如圖3-1所示。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -