當前位置:首頁 » 編程軟體 » 網路編程知識

網路編程知識

發布時間: 2022-12-09 02:31:44

java網路編程基本概念是什麼

1、Java網路編程基本概念——主機的網路層


主機網路層定義特定網路介面(如乙太網或WiFi天線)如何通過物理連接將IP數據報發送到本地網路或世界其他地方。在主機網路層中,連接不同計算機的硬體部分(電纜、光纖、無線電波或煙霧信號)有時被稱為網路的物理層。Java程序員不需要擔心這一層,除非出現錯誤,例如計算機後面的插頭脫落或有人切斷了您與外部世界之間的T-1線。換句話說,Java將永遠看不到物理層。


2、Java網路編程基本概念——網路層


Internet層的下一層是主機網路層,這是Java程序員需要考慮的第一層。網際網路層協議定義了數據位和位元組如何組織成更大的組,稱為包,也定義了不同計算機互相查找的定址機制。Internet Protocol (IP)是世界上使用最廣泛的Internet層協議,也是Java唯一了解的Internet層協議。


網際網路協議基本上是兩種協議:IPV4使用32位地址,IPV6使用128位地址,並增加了技術特性來幫助路由。這是兩種完全不同的網路協議,如果沒有特殊的網關/隧道協議,它們甚至不能在同一網路上互操作,但是Java向您隱藏了幾乎所有這些差異。


除了路由和定址之外,網際網路層的第二個作用是使不同類型的主機網路層能夠彼此對話。網際網路路由器在WiFi和乙太網、乙太網和DSL、DSL和光纖往返協議之間進行交換。沒有網際網路層或類似的分層,每台計算機只能與同一類型網路上的其他計算機通信。網際網路層負責使用適當的協議將異類網路彼此連接起來。


3、Java網路編程基本概念——傳輸層


原始數據報有一些缺點。最明顯的缺點是無法保證可靠的傳輸,即使可以保證,也可能在傳輸過程中被損壞。頭檢查只能檢測頭中的損壞,而不能檢測數據報的數據部分。最後,即使數據報沒有損壞地到達了它的目的地,它也可能不能按照發送的順序到達。


傳輸層負責確保按發送的順序接收數據包,確保沒有數據丟失或銷毀。如果數據包丟失,傳輸層要求發送方重新傳輸該數據包。為此,IP網路向每個數據報添加了一個額外的頭,其中包含更多信息。


這個級別有兩個主要協議。第一個是傳輸控制協議(TCP),這是一個昂貴的協議,允許丟失或損壞的數據按照發送順序重新傳輸。第二個協議是用戶數據報協議(User Datagram Protocol, UDP),它允許接收方檢測損壞的數據包,而不保證它們按照正確的順序發送(或者根本不發送)。然而,UDP通常比TCP快。TCP被稱為可靠協議。UDP是不可靠的。


4、Java網路編程基本概念——應用程序層


向用戶交付數據的層稱為應用層。以下三個層定義如何將數據從一台計算機傳輸到另一台計算機。應用層決定數據傳輸後的操作。有HTTP為用戶Web, SMTP, POP, IMAP為用戶電子郵件;FSP, TFTP用於文件傳輸,NFS用於文件訪問;文件共享使用Gnutella和BitTorrent;會話發起協議(SIP)和Skype用於語音通信。此外,您的程序可以在必要時定義自己的應用程序級協議。(頁面)


5、Java網路編程基本概念——IP、TCP、UDP


IP被設計成允許任意兩點之間有多條路由,繞過損壞的路由器來路由數據包。由於兩點之間有多條路由,而且由於網路流量或其他因素,它們之間的最短路徑可能會隨著時間而變化,因此構成特定數據流的數據包可能不會走同一條路由。即使它們全部到達,也可能不是按照它們被發送的順序到達的。為了改進這一基本機制,TCP被放置在IP上,以便連接的兩端可以確認收到的IP數據包,並請求重傳丟失或損壞的數據包。此外,TCP允許接收端上的數據包按照發送的順序重新分組。


然而,TCP有很多開銷。因此,如果單個數據包的丟失不會完全破壞數據,那麼可以使用UDP發送數據包,而不需要TCP提供的保證。UDP是一種不可靠的協議。它不能保證信息包將到達它們的目的地,或者它們將以它們被發送的相同順序到達。


6、Java網路編程基本概念——IP地址和域名


IPv4網路上的每台計算機都有一個4位元組的數字ID。通常在一個點上以四段格式寫,比如192.1.32.90,每個數字是一個無符號位元組,范圍從0到255。IPv4網路上的每台計算機都有一個唯一的四段地址。當數據通過網路傳輸時,包的報頭包括要發送到的機器的地址(目的地址)和要發送到的機器的地址(源地址)。路由上的路由器通過檢查目的地址來選擇發送包的最佳路徑。包含源地址是為了讓收件人知道該對誰進行回復。


雖然計算機可以很容易地處理數字,但人類並不擅長記住它們。因此,域名系統(DNS)被開發出來,用來將容易記住的主機名(如www.12345.com)轉換成數字互聯網地址(如208.201.243.99)。當Java程序訪問網路時,它們需要同時處理數字地址和相應的主機名。這些方法由java.net.InetAddress類提供。


7、Java網路編程基本概念——港口


如果每台計算機一次只做一件事,地址就足夠了。但是現代計算機同時做許多不同的事情。電子郵件需要與FTP請求分開,而FTP請求也需要與Web通信分開。這是通過埠完成的。具有IP地址的每台計算機有數千個邏輯埠(確切地說,每個傳輸層協議有65,535個埠)。這些只是計算機內存中的抽象,不代表任何物理對象,不像USB埠。每個埠在1到65535之間進行數字標識。每個埠可以分配給一個特定的服務。


8、Java網路編程基本概念——一個防火牆


在互聯網上有一些頑皮的人。要排除它們,通常需要在本地網路上設置一個接入點,並檢查進出該接入點的所有流量。位於網際網路和本地網路之間的一些硬體和軟體會檢查所有輸入和輸出的數據,以確保它是防火牆。防火牆通常是路由器的一部分,它將本地網路連接到更大的網際網路,並可以執行其他任務,如網路地址轉換。另外,防火牆可以是單獨的機器。防火牆仍然主要負責檢查進出其網路介面的數據包,根據一組規則接收或拒絕數據包。


本篇《什麼是Java網路編程基本概念?看完這篇文章你一定可以明白》到這里就已經結束了,小編一直認為,某一個編程軟體受歡迎是有一定原因的,首先吸引人的一定是其功能,環球網校的小編祝您java學習之路順利,如果你還想知道更多java知識,也可以點擊本站的其他文章進行學習。

⑵ 網站編程需要學什麼

首先需要有一門編程語言的基礎,目前學計算機編程開始學的大多是C語言,另外與編程語言相關的課程是數據結構。如果學習網路編程還需要對網路方面有一些基本的了解,即需要學習計算機網路基礎知識,比如TCP/IP體系結構,掌握它的分層結構及各層次的功能及在各層次運行的協議。網路編程語言有ASP PHP、JSP及一些腳本語言,可以根據具體的情況來進行相關的學習。

⑶ 接觸Android網路編程需要什麼知識基礎

Android平台的網路應用絕大部分都是基於Java的編程介面的,也就是說我們開發類似的運用的時候可以有多種選擇,比J2me確實好多了。
2.1. 標准Java介面
java.net.*下面提供了訪問 HTTP 服務的基本功能。使用這部分介面的基本操作主要包括:
·創建 URL 以及 URLConnection / HttpURLConnection 對象
· 設置連接參數
·連接到伺服器
· 向伺服器寫數據
·從伺服器讀取數據
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.HttpURLConnection;

try {
// 創建一個 URL 對象
URL url = new URL(your_url);

// 創建一個 URL 連接,如果有代理的話可以指定一個代理。
URLConnection connection = url.openConnection(Proxy_yours);
// 對於 HTTP 連接可以直接轉換成 HttpURLConnection,
// 這樣就可以使用一些 HTTP 連接特定的方法,如 setRequestMethod() 等
//HttpURLConnection connection =
(HttpURLConnection)url.openConnection(Proxy_yours);

// 在開始和伺服器連接之前,可能需要設置一些網路參數
connection.setConnectTimeout(10000);
connection.addRequestProperty("User-Agent",
"J2me/MIDP2.0");

// 連接到伺服器
connection.connect();

// 往伺服器寫數據,數據會暫時被放到內存緩存區中
// 如果僅是一個簡單的 HTTP GET,這一部分則可以省略
OutputStream outStream = connection.getOutputStream();
ObjectOutputStream objOutput = new ObjectOutputStream(outStream);
objOutput.writeObject(new String("this is a string..."));
objOutput.flush();

// 向伺服器發送數據並獲取應答
InputStream in = connection.getInputStream();

// 處理數據
...

} catch (Exception e) {
// 網路讀寫操作往往會產生一些異常,所以在具體編寫網路應用時
// 最好捕捉每一個具體以採取相應措施
}

2.2. Apache介面
Apache HttpClient 是一個開源項目,彌補了 java.net.* 靈活性不足的缺點,為客戶端的HTTP編程提供高效、最新、功能豐富的工具包支持。Android 平台引入了 Apache HttpClient 的同時還提供了對它的一些封裝和擴展,例如設置預設的HTTP超時和緩存大小等。早期的 Android 曾同時包括 Commons HttpClient (org.apache.commons.httpclient.*) 和 HttpComponents (org.apache.http.client.* ),不過當前版本 (1.5) 中開發者只能使用後者,也就是說類似以下的一些類:
使用這部分介面的基本操作與 java.net.* 基本類似,主要包括:
· 創建 HttpClient 以及 GetMethod / PostMethod, HttpRequest 等對象
·設置連接參數
·執行 HTTP 操作
· 處理伺服器返回結果
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.params. HttpConnectionParams;
import org.apache.http.client.params. HttpClientParams;

try {
// 創建 HttpParams 以用來設置 HTTP 參數(這一部分不是必需的)
HttpParams params = new BasicHttpParams();

// 設置連接超時和 Socket 超時,以及 Socket 緩存大小
HttpConnectionParams.setConnectionTimeout(params, 20 * 1000);
HttpConnectionParams.setSoTimeout(params, 20 * 1000);
HttpConnectionParams.setSocketBufferSize(params, 8192);

// 設置重定向,預設為 true
HttpClientParams.setRedirecting(params, true);

// 設置 user agent
HttpProtocolParams.setUserAgent(params, userAgent);

// 創建一個 HttpClient 實例
// 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient
// 中的用法,在 Android 1.5 中我們需要使用 Apache 的預設實現 DefaultHttpClient
HttpClient httpClient = new DefaultHttpClient(params);

// 創建 HttpGet 方法,該方法會自動處理 URL 地址的重定向
HttpGet httpGet = new HttpGet ("http://www.test_test.com/");

HttpResponse response = client.execute(httpGet);
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
// 錯誤處理,例如可以在該請求正常結束前將其中斷
httpGet.abort();
}

// 讀取更多信息
Header[] headers = response.getHeaders();
HttpEntity entity = response.getEntity();
Header header = response.getFirstHeader("Content-Type");
} catch (Exception ee) {
//
} finally {
// 釋放連接
client.getConnectionManager().shutdown();
}
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.params. HttpConnectionParams;
import org.apache.http.client.params. HttpClientParams;

try {
// 創建 HttpParams 以用來設置 HTTP 參數(這一部分不是必需的)
HttpParams params = new BasicHttpParams();

// 設置連接超時和 Socket 超時,以及 Socket 緩存大小
HttpConnectionParams.setConnectionTimeout(params, 20 * 1000);
HttpConnectionParams.setSoTimeout(params, 20 * 1000);
HttpConnectionParams.setSocketBufferSize(params, 8192);

// 設置重定向,預設為 true
HttpClientParams.setRedirecting(params, true);

// 設置 user agent
HttpProtocolParams.setUserAgent(params, userAgent);

// 創建一個 HttpClient 實例
// 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient
// 中的用法,在 Android 1.5 中我們需要使用 Apache 的預設實現 DefaultHttpClient
HttpClient httpClient = new DefaultHttpClient(params);

// 創建 HttpGet 方法,該方法會自動處理 URL 地址的重定向
HttpGet httpGet = new HttpGet ("http://www.test_test.com/");

HttpResponse response = client.execute(httpGet);
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
// 錯誤處理,例如可以在該請求正常結束前將其中斷
httpGet.abort();
}

// 讀取更多信息
Header[] headers = response.getHeaders();
HttpEntity entity = response.getEntity();
Header header = response.getFirstHeader("Content-Type");
} catch (Exception ee) {
//
} finally {
// 釋放連接
client.getConnectionManager().shutdown();
}
以下例子以 HttpGet 方式通過代理訪問 HTTPS 網站:
try {
HttpClient httpClient = new HttpClient();

// 設置認證的數據
httpClient.getCredentialsProvider().setCredentials(
new AuthScope("your_auth_host", 80, "your_realm"),
new UsernamePasswordCredentials("username", "password"));

// 設置伺服器地址,埠,訪問協議
HttpHost targetHost = new HttpHost("www.test_test.com", 443, "https");

// 設置代理
HttpHost proxy = new HttpHost("192.168.1.1", 80);
httpClient.getParams().setParameter
(ConnRoutePNames.DEFAULT_PROXY, proxy);

// 創建一個 HttpGet 實例
HttpGet httpGet = new HttpGet("/a/b/c");

// 連接伺服器並獲取應答數據
HttpResponse response = httpClient.execute(targetHost, httpGet);

// 讀取應答數據
int statusCode = response.getStatusLine().getStatusCode();
Header[] headers = response.getHeaders();
HttpEntity entity = response.getEntity();
} catch (Exception ee) {
//
2.3. Android介面
android.net.* 實際上是通過對 Apache 的 HttpClient 的封裝來實現的一個 HTTP 編程介面,同時還提供了 HTTP 請求隊列管理, 以及 HTTP 連接池管理,以提高並發請求情況下(如轉載網頁時)的處理效率,除此之外還有網路狀態監視等介面。
以下是一個通過 AndroidHttpClient 訪問伺服器的最簡例子:

import import android.net.http.AndroidHttpClient;

try {
AndroidHttpClient client = AndroidHttpClient.newInstance(「your_user_agent」);

// 創建 HttpGet 方法,該方法會自動處理 URL 地址的重定向
HttpGet httpGet = new HttpGet ("http://www.test_test.com/");

HttpResponse response = client.execute(httpGet);
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
// 錯誤處理
}

// 關閉連接
client.close();
} catch (Exception ee) {
//
}

⑷ 學習網路編程需要具備什麼知識基礎

網路編程指什麼?java么?編程不需要基礎知識的,拿本書,有台電腦,照著做慢慢來就行。只不過編程是個耐心和費腦子的事情,自學的話你需要定力和韌性才行

⑸ 學習網路編程需要具備什麼知識基礎

學習網路編程需要具備計算機基礎知識,以及一些英語基礎,看題主描述是學習過C語言,所以算是有一定基礎的,所以如果想要學習網路編程還是比較容易的。

現在用的比較多的是java,而且java的應用范圍也比較廣,即使後面不從事網路編程,想要做其他編程類的工作也是比較容易的,所以選擇學java可能是個不錯的選擇。網路編程現在是在Windows下應用的比較廣泛,可以先從Windows下學起。

學習網路編程的方式無非兩種一種是自學,一種是去專業的學校學,選擇哪種學習方式,題主可以根據自身的時間及經濟狀況來進行選擇,畢竟適合自己的才是最好的。

⑹ 學習計算機網路編程應該學些什麼

如果想學習計算機網路編程(即:網路 socket 編程),那麼必須至少需要學好:計算機操作系統原理、數據結構、計算機網路原理(包括必須要熟練掌握各種網路協議的幀格式)。
因為不同的網路協議(例如:TCP、IP、ICMP、UDP),其幀格式的詳細定義是不一樣的。若想要在這方面的編程有較大的進步,那麼首先必須要有兩台聯網的電腦,並安裝好編程環境(最好安裝 Linux系統)。同時參考《TCP/IP 詳解》一套教材,以便進行編程上的體會。

python 網路編程需要學習哪些網路相關的知識

Python網路編程是一個很大的范疇,個人感覺需要掌握的點有:
1. 如何使用Python來創建socket, 如何將socket與指定的IP地址和埠進行綁定,使用socket來發送數據,接受數據,
2. 如何使用Python中處理線程,從而編寫可以同時處理多個請求的web伺服器
3. 如何使用Python來控制HTTP層的邏輯,包括如何創建http GET,POST,PUT,DELETE請求,如何處理接受到的HTTP請求,這些分別涉及python的httplib, basehttpserver等模塊
4. 掌握一種基本的python的web開發框架,比如webpy, django,pylon
5. 了解非阻塞式的HTTP Server,比如tornado
6. 了解twisted, python編寫的消息驅動的網路引擎

⑻ 網路編程C語言入門知識

c
語言
是高級語言,但由於它可以通過指針對內存進行訪問,具有了低級語言的特性,因此很多人也稱它是中級語言。按照內容來說C語言有自己的語言符號和語句規則,他有3種基本的結構:順序結構,選擇結構、循環結構。然後按照不同的需要通過用這三種結構的不同「組合」(當然不是拼湊那種簡單組合)就可以編出不同功能的程序了。

當然還有指針和結構體等其他一些內容,但編程強調的是演算法能力。演算法即是你要做一件事的步驟,在編程裡面體現的就是你要實現一個功能要知道編寫的內容有幾部分每一部分大概用什麼方法去實現。

熱點內容
光介質存儲 發布:2024-05-07 01:32:25 瀏覽:350
蘋果平板ipad密碼忘了怎麼辦 發布:2024-05-07 01:17:16 瀏覽:704
伏吟的演算法 發布:2024-05-07 00:51:48 瀏覽:830
安卓手機上的照相鍵在哪裡 發布:2024-05-07 00:51:45 瀏覽:606
ftp如何刪除頑固文件 發布:2024-05-07 00:50:57 瀏覽:251
idea文件夾顯示 發布:2024-05-07 00:30:04 瀏覽:250
怎麼把ps存儲為ai 發布:2024-05-07 00:30:03 瀏覽:274
參數內存緩存 發布:2024-05-07 00:28:54 瀏覽:747
android狀態欄高度 發布:2024-05-07 00:24:42 瀏覽:242
資料庫主文件 發布:2024-05-07 00:14:41 瀏覽:609