江苏11选5走势图:Java套接字實現網絡編程之基礎篇

來源:互聯網
更新時間:2018/2/9 5:11:15
責任編輯:魯能
字體:

福建体彩走势图 www.uyduz.icu

   用java開發網絡軟件非常方便和強大,java的這種力量來源于他獨有的一套強大的用于網絡的 api,這些api是一系列的類和接口,均位于包java.net和javax.net中。在這篇文章中我們將介紹套接字(socket)慨念,同時以實例說明如何使用network api操縱套接字,在完成本文后,你將具備編寫網絡低端通訊軟件的能力。

什么是套接字(socket)?

network api是典型的用于基于tcp/ip網絡java程序與其他程序通訊,network api依靠socket進行通訊。socket可以看成在兩個程序進行通訊連接中的一個端點,一個程序將一段信息寫入socket中,該socket將這段信息發送給另外一個socket中,使這段信息能傳送到其他程序中。如圖1

我們來分析一下圖1,host a上的程序a將一段信息寫入socket中,socket的內容被host a的網絡管理軟件訪問,并將這段信息通過host a的網絡接口卡發送到host b,host b的網絡接口卡接收到這段信息后,傳送給host b的網絡管理軟件,網絡管理軟件將這段信息保存在host b的socket中,然后程序b才能在socket中閱讀這段信息。

假設在圖1的網絡中添加第三個主機host c,那么host a怎么知道信息被正確傳送到host b而不是被傳送到host c中了呢?基于tcp/ip網絡中的每一個主機均被賦予了一個唯一的ip地址,ip地址是一個32位的無符號整數,由于沒有轉變成二進制,因此通常以小數點分隔,如:198.163.227.6,正如所見ip地址均由四個部分組成,每個部分的范圍都是0-255,以表示8位地址。

值得注意的是ip地址都是32位地址,這是ip協議版本4(簡稱ipv4)規定的,目前由于ipv4地址已近耗盡,所以ipv6地址正逐漸代替ipv4地址,ipv6地址則是128位無符號整數。

假設第二個程序被加入圖1的網絡的host b中,那么由host a傳來的信息如何能被正確的傳給程序b而不是傳給新加入的程序呢?這是因為每一個基于tcp/ip網絡通訊的程序都被賦予了唯一的端口和端口號,端口是一個信息緩沖區,用于保留socket中的輸入/輸出信息,端口號是一個16位無符號整數,范圍是0-65535,以區別主機上的每一個程序(端口號就像房屋中的房間號),低于256的短口號保留給標準應用程序,比如pop3的端口號就是110,每一個套接字都組合進了ip地址、端口、端口號,這樣形成的整體就可以區別每一個套接字t,下面我們就來談談兩種套接字:流套接字和自尋址數據套接字。

流套接字(stream socket)

無論何時,在兩個網絡應用程序之間發送和接收信息時都需要建立一個可靠的連接,流套接字依靠tcp協議來保證信息正確到達目的地,實際上,ip包有可能在網絡中丟失或者在傳送過程中發生錯誤,任何一種情況發生,作為接受方的 tcp將聯系發送方tcp重新發送這個ip包。這就是所謂的在兩個流套接字之間建立可靠的連接。

流套接字在c/s程序中扮演一個必需的角色,客戶機程序(需要訪問某些服務的網絡應用程序)創建一個扮演服務器程序的主機的ip地址和服務器程序(為客戶端應用程序提供服務的網絡應用程序)的端口號的流套接字對象。

客戶端流套接字的初始化代碼將ip地址和端口號傳遞給客戶端主機的網絡管理軟件,管理軟件將ip地址和端口號通過nic傳遞給服務器端主機;服務器端主機讀到經過nic傳遞來的數據,然后查看服務器程序是否處于監聽狀態,這種監聽依然是通過套接字和端口來進行的;如果服務器程序處于監聽狀態,那么服務器端網絡管理軟件就向客戶機網絡管理軟件發出一個積極的響應信號,接收到響應信號后,客戶端流套接字初始化代碼就給客戶程序建立一個端口號,并將這個端口號傳遞給服務器程序的套接字(服務器程序將使用這個端口號識別傳來的信息是否是屬于客戶程序)同時完成流套接字的初始化。

如果服務器程序沒有處于監聽狀態,那么服務器端網絡管理軟件將給客戶端傳遞一個消極信號,收到這個消極信號后,客戶程序的流套接字初始化代碼將拋出一個異常對象并且不建立通訊連接,也不創建流套接字對象。這種情形就像打電話一樣,當有人的時候通訊建立,否則電話將被掛起。

這部分的工作包括了相關聯的三個類:inetaddress, socket, 和 serversocket。 inetaddress對象描繪了32位或128位ip地址,socket對象代表了客戶程序流套接字,serversocket代表了服務程序流套接字,所有這三個類均位于包java.net中。

inetaddress類

inetaddress類在網絡api套接字編程中扮演了一個重要角色。參數傳遞給流套接字類和自尋址套接字類構造器或非構造器方法。inetaddress描述了32位或64位ip地址,要完成這個功能,inetaddress類主要依靠兩個支持類inet4address 和 inet6address,這三個類是繼承關系,inetaddrress是父類,inet4address 和 inet6address是子類。資訊轉帖于 Xue163.com_JAVA認證考試題庫

根據您訪問的內容,您可能還對以下內容感興趣,希望對您有幫助:

Java網絡編程如何初始化套接字

答:不同的構造方法不僅帶的參數不同,所具有的意義也不一樣。下面分別解析這兩個類的實例初始化過程。 ServerSocket 實例的初始化 ServerSocket 類提供了四個構造器: public Socket(String host, int port) throws UnknownHostException, IOExcept...

java網絡編程中如何知道對方發消息過來了

答:可以參考一下這段代碼//1. 構造ServerSocket實例,指定服務端口。ServerSocket servSock = new ServerSocket(servPort);while(true){ // 2.調用accept方法,建立和客戶端的連接 Socket clntSock = servSock.accept(); SocketAddress clientAddre...

java利用網絡編程在客戶端輸入三角形三邊數值,在服...

答:package play.b;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class ServerCal { public static void...

java網絡編程的基本內容有哪些?其特點和優勢如何?...

答:關鍵詞:Java 語言 技術 1.Java語言的出現 自從1946年世界上第一臺電子計算機問世以來,計算模式的發展經歷了三個階段:集中計算模式、分散計算模式和網絡計算模式。Internet的出現,為在網絡計算模式下的科學計算和信息處理提供了良好平臺。然...

java socket網絡編程

答://==============Server.java=================// import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) throws IOException { ServerSocket s =...

java網絡編程包含些什么

答:針對網絡通信的不同層次,Java提供的網絡功能有四大類:InetAddress 、URLs、Sockets、Datagram 1、InetAddress面向的是網絡層(IP層),用于標識網絡上的硬件資源。 2、 URL面向的應用層,通過URL,Java程序可以直接送出或讀入網絡上的數據。 3...

java網絡編程 和 java web有什么區別?

答:差別很大的,網絡編程主要是指網絡通信,實現計算機與計算機之間的對話和文件傳輸等,就像QQ,飛秋,P2P點對點傳輸等等。而WEB主要就是B/S結構的應用,通俗一點說就是開發網站、網頁,像QQ空間,百度這樣的....

求一個用JAVA寫的網絡編程的網絡聊天系統,能夠實...

答:這個網上多的很。

java 網絡編程: 如何實現客戶端與客戶端之間的之...

答:(1)服務器首先啟動監聽程序,對指定的端口進行監聽,等待接收客戶端的連接請求。 (2)客戶端程序啟動,請求連接服務器的指定端口。 (3)服務器收到客戶端的連接請求后與客戶端建立套接字連接。 (4)連接成功后,客戶端與服務器分別打開兩個...

java中如何用網絡編程實現登陸功能?

答:private void postData(String url, String data) throws Exception { URL url = new URL(url); URLConnection urlConnection = url.openConnection(); urlConnection.setDoOutput(true);// 提交數據 try (PrintWriter pw = new PrintWriter(url...

java socket網絡編程

a&&a+c>b; } } //=================Client.java======================// import java.io.IOException; import java.net.Socket; import java.n...

Java網絡編程如何初始化套接字

低延遲和高帶寬的相對重要性,數值越大則越重要;其各自的絕對值沒有意義。該方法的初衷是為了讓 Java 能在用非 TCP/IP 實現的套接字環境下工作得更好,某些需要對網絡進行...

如何用套接字編程一個網絡聊天程序

用java進行網絡編程確實很方便,很容易上手。這幾天用java進行socket編程,收獲不少。 首先,進行服務端的編程,作為服務端,編程主要按下面幾個步驟進行: // 1. 創建socket S...

利用java 進行網絡編程 需要添加jar包嗎

這個不好說啊,那要看你做的是什么網絡編程了。這個概念太大,httpclient網絡爬蟲必須添加jar包,基于java.net和socket的c/s程序基本就不需要添加。具體的情況,請發送到lengjia...

Java程序中使用套接字方法實現C/S模式時,在Client端支持網...

Socket

java套接字編程:傳輸一個字符串 可以使用下面的框架:

inputstream outputstream的子類都是基于字節流的,可以用上,input.readObject()是用來傳輸java序列化對象的 Socket socket=new Socket(String address,int port); InputStream ...

java中如何實現兩臺電腦間的互動

你說的是網絡編程吧,java中有socket套接字實現網絡通信,可以做類似於QQ一樣的C/S模式的編程。

java 網絡編程: 如何實現客戶端與客戶端之間的之間通信

對指定的端口進行監聽,等待接收客戶端的連接請求。 (2)客戶端程序啟動,請求連接服務器的指定端口。 (3)服務器收到客戶端的連接請求后與客戶端建立套接字連接。 (4)連接成...

java網絡編程,怎樣在客戶端和服務器間實現通信

對指定的端口進行監聽,等待接收客戶端的連接請求。 (2)客戶端程序啟動,請求連接服務器的指定端口。 (3)服務器收到客戶端的連接請求后與客戶端建立套接字連接。 (4)連...


www.xue163.net true //www.xue163.net/kao/58/589154.html report 18783 Java套接字實現網絡編程之基礎篇,用java開發網絡軟件非常方便和強大,java的這種力量來源于他獨有的一套強大的用于網絡的api,這些api是一系列的類和接口,均位于包java.net和javax.net中。在這篇文章中我們將介紹套接字(socket)慨念,同時以實例說明如何使用n...
網友評論
最新添加資訊
    24小時熱門資訊
    娛樂時尚
      科技資訊
      歷史文化
        真視界
        旅游美食
        精彩圖文
        我愛我車
        母嬰健康
        關于本站 | 廣告服務 | 手機版 | 商務合作 | 免責申明 | 招聘信息 | 聯系我們
        Copyright © 2004-2018 xue163.net All Rights Reserved. 學網 版權所有
        京ICP備10044368號-1 京公網安備11010802011102號
        教育考試: 學歷財經建筑 醫藥公考資格外語電腦作文招聘中小學留學 文檔 移民 文庫專欄23問答中心問答圖書館知識IT編程數碼信息解決方案信息中心IT科技topzttophottopsctopnew問答新聞中心軟件教室設計大全網絡相關英語學習開發編程考試中心參考范文管理文庫營銷中心站長之家IT信息中心商學院數碼大全硬件DIY企業服務網吧在線百科硬件知識手機平板汽車游戲家電精彩攝影現代家居IT女人經驗健康養生獵奇創業攻略教育學習歷史時尚潮流福建体彩走势图漲知識