許文勇

摘 要:科學技術的不斷發展推動了網絡信息化時代的發展,隨著計算機技術不斷的發展,各種網絡編程技術日新月異。本文介紹了Socket網絡編程的基本概念,以及實現Socket編程的基本原理,通給出一個基于TCP協議實例,來說明實現網絡編程。
關鍵詞:Socket;網絡編程技術;通信
隨著科學技術的發展,計算機網絡編程技術在人們的日常生活中的應用也越來越普遍了通過網絡使用通信協議實現進程間的通信,TCP/IP就是網絡上常用的協議之一,在進行網絡編程程序設計時,TCP/IP協議的核心內容受到操作系統的控制。網絡編程程序必須通過協議來實現自己的功能,靠系統提供的 TCP/IP協議來完成編程程序。
1 Socket網絡編程的基本概念
Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket[1]接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。Socket可以看成在兩個程序進行通訊連接中的一個端點,是連接應用程序和網絡驅動程序的橋梁,Socket在應用程序中創建,通過綁定與網絡驅動建立關系。此后,應用程序送給Socket的數據,由Socket交網絡驅動程序向網絡上發送出去。計算機從網絡上收到與該Socket綁定IP地址和端口號相關的數據后,由網絡驅動程序交給Socket,應用程序便可從該Socket中提取接收到得數據,網絡應用程序就是這樣通過Socket進行數據的發送與接收的。
1.1 關于地址
一個程序要想與另一個程序通信,就要給計算機提供足夠的信息,使其能找到另一個程序。在TCP/IP協議中,有兩部分信息用來定位一個指定的程序,互聯網地址(Internet address)和端口號(port number)。其中互聯網地址由IP協議使用,而附加的端口號地址信息由傳輸協議使用(TCP/IP協議)解析。
1.2 套接字
Socket(套接字)是一中比較抽象的東西,利用編程程序來接受數據[2]。計算機網絡編程程序根據TCP/IP協議中系統提供的程序來完成套接字的通訊。每一臺計算機都有一個標識來識別計算機的應用程序。如果一個端口確定了一臺主機上的一個套接字,那么主機中的多個程序可以對同一個套接字進行訪問。在實際應用中,訪問相同的套接字的不同程序一般屬于同一個應用。Socket套接口有3種類型。一種SOCK_STREAM流式套接口,面向連接的,可靠地,TCP。第二種是SOCK_DRAM數據報套接口,面向無連接,不可靠,UDP。第三種是原始套接口,主要用于新的網絡協議實現的測試。
2 Socket編程主要流程
編程分為服務器端和客戶端兩個方面。在進行Socket編程的時候,首先創建服務器套接字,服務器端通過Socket()建立一個套接字,然后通過bind()將創建的套接字綁接到要聯系的IP地址和端口上,調用listen()監聽鏈接請求,客戶端通過接受指令,通過Socket()建立一個套接字,利用界面上的“connect”按鈕,調用Connect()像服務器請求連接。在客戶端完成Connect指令后,服務器端調用[3]accept()接受請求并返回新的套接字,通過返回的套接字與客戶端進行通信,當在客戶端點擊Send()指令時,服務器端就得調用receive()指令接受信息。在完成通信交流后,服務器端與客戶端調用Close()關閉Socket(),寵兒終端連接。例如Daytime服務器,如下圖所示。
3 Socket網絡編程技術實現
public static synchronized void setSocketFactory(SocketImplFactory fac) throws IOException 這個方法設置系統(system)的服務器SocketImplFactory,這是用于創建
ServerSocket對象的類庫。它與創建Socket對象的類庫有所不同,盡管語法是相似的??梢杂靡粋€庫創建Socket對象,用另一個庫創建ServerSocket對象。但是在程序也可以只設置這個類庫一次。試圖第二次設置SocketImplFactory時會觸發一個SocketException。
protected final void implAccept(Socket s) throws IOException ServerSocket的子類使用這個方法實現accept()??梢园盐催B接的Socket對象傳遞到implAccept()(這樣做同樣要求實現Socket子類,因為標準的java.net.Socket類沒有提供創建未連接套接字的工具)。當此方法返回時,Socket變量s就連接到客戶機上。
4 結束語
Socket網絡編程技術運用為人們通過計算機網絡進行交流提供了便利。隨著科學技術的發展,Socket網絡編程技術也要與時俱進,不斷創新,為計算機網絡信息化發展提供動力。
[參考文獻]
[1]周炎濤,李立明.TCP/IP協議下網絡編程技術及其實現[J].航空計算技術,2011,09(03):33-34.
[2]周小松,朱雄軍.基于UDP協議的Socket網絡編程模式的實現[J].武漢職業技術學院學報(綜合版),2011,05(01):36-38.
[3]程詠喜,蔣珉.基于TCP/IP協議的WinSock網絡編程及應用[J].計算機時代,2012,06(07):12-14.endprint