網路程式設計(一)網路程式設計入門

2021-10-09 21:35:47 字數 3471 閱讀 2636

網路是計算機通訊的基礎,網路程式設計是學習計算機網路最佳方法,通常標準的計算機網路通訊協議有udp和tcp兩種(此處不包含微計算機網路通訊協議(如can等)),首先小猿引入幾個面試常見的問題。

1、網路程式設計三要素是什麼?

答:網路程式設計的三要素是,ip,傳輸協議,埠號。

2、網路模型有幾種?如何理解?

答:網路模型現常見的有五層分發,七層分法、還有四層說法,這幾種分法的示意圖如下所示:

7層示意圖和各層協議解釋。

7層協議和5層協議對比

每個iso層所用到的協議。

3、我們的程式設計屬於那一層?

答:我們的程式設計屬於應用層。

下文將重點介紹有關udp和tcp相關的程式設計。

udp是一種使用者協議,它是一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。udp特點:

udp是無連線的,即通訊時不需要建立連線,可減少網路資源開銷(報文字節比較少),可縮短傳送時間,udp可採用廣播等通行方式。

採用udp協議實現一收一發。

udp傳送端程式

public class udpsenddemo 

}ds.close();

br.close();

system.out.println("send socket closed ");}}

udp接收端**

public class udpreceivedemo 

}ds.close();

system.out.println("receive socket closed");}}

執行結果

傳送端

接收端

tcp通訊協議是一種可靠的網路協議,他在通訊的兩端各建立乙個socket物件,從而在通行的兩端形成網路虛擬鏈路,一旦建立了虛擬網路鏈路,兩端的程式就可以通過虛擬鏈路進行通訊。

tcp協議的特點是

1、面向連線的:使用tcp協議通訊的雙方必須先建立連線,然後才能開始資料的讀寫,tcp連線是全雙工的,即雙方的資料讀寫可以通過乙個連線進行。完成資料交換之後,通訊雙方都必須斷開連線以釋放資源。tcp協議的這種連線是一對一的,所以基於廣播和多播(目標是多個主機位址)的應用程式不能使用tcp服。

2流式服務:tcp的位元組流服務的表現形式就體現在,傳送端執行的寫運算元和接收端執行的讀操作次數之間沒有任何數量關係,當傳送端應用程式連續執行多次寫操作的時,tcp模組先將這些資料放入tcp傳送緩衝區中。當tcp模組真正開始傳送資料的時候,傳送緩衝區中這些等待傳送的資料可能被封裝成乙個或多個tcp報文段發出。

若想更加詳細的去看計算機網路知識,請看這位大佬的計算機網路文章。

客戶端傳送資料,服務端接收資料並顯示在控制台上,當客戶端傳送終止命令時候時,客戶端和服務端都要終止服務。

客戶端

public class clientdemo 

}system.out.println("傳送客戶端停止命令,客戶端開始停止");

br.close();

bw.close();

socket.close();}}

服務端

public class serverdemo 

if(str.equals("999"))

}system.out.println("接收到停止命令,開始釋放服務端資源");

br.close();

ss.close();}}

執行結果:

客戶端

服務端

客戶端從txt檔案中讀取資料,將讀取的資料發到服務端,服務端將內容讀取後重行生成乙個檔案,並將接收到的內容寫入檔案中。

服務端執行緒類

public class serverthread implements runnable 

@override

public void run()

bwserver = new bufferedwriter(new outputstreamwriter(accept.getoutputstream()));

bwserver.write(thread.currentthread().getname() + "檔案上傳成功");

system.out.println(thread.currentthread().getname()+"檔案上傳成功");

bwserver.newline();

bwserver.flush();

} catch (ioexception e) finally catch (ioexception e) }}

}

服務端主類

public class server02demo }}

客戶端類

public class client02demo 

socket.shutdownoutput();

bufferedreader brclient = new bufferedreader(new inputstreamreader(socket.getinputstream()));

string data = brclient.readline();

system.out.println("伺服器的反饋是:"+data);

brclient.close();

br.close();

bw.close();

socket.close();}}

執行結果

服務端測試結果

客戶端測試結果

執行結果符合預期,本章案例結束。

網路程式設計(一) 網路基礎之一

今天開始學習網路程式設計,當然還是要從網路基礎學起,首先我們來熟悉一下tcp ip模型與osi模型之間的對應關係 一.tcp ip四層模型 tcp ip是 一組協議的代名詞,它還包括許多協議,組成了tcp ip協議簇。tcp ip協議簇 分為四層,ip位於協議簇的第 二層 對應osi的第三層 tcp...

Windows程式設計 網路概念(一) 網路分層

ps 這些文字是參考的unp寫的,但是網路分層的原理都是一樣的,並且懶得專門去寫乙個關於windows的了,所以就這樣 網路是分層的,程式設計師關心的是以下4層 在談論網路資料的時候,如果說到幀,則應該知道是乙太網層。我們一般關心的是tcp 分節,應用層 訊息。tcp ip協議不僅僅指的是tcp協議...

linux網路程式設計學習之一網路位元組序

在不同的平台,不同的系統中,往往位元組序不同,有的採用大端順序,有的採用小端順序。在網路程式設計中為了統一,統統採用網路位元組序。網路位元組序是大端順序。網路位元組序有關的轉換函式主要有 unsigned short int htons unsigned short int hostshort 將主...