



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第JavaTCP網(wǎng)絡(luò)通信協(xié)議詳細(xì)講解TCP與UDP都屬于TCP/IP協(xié)議
TCP(TransmissionControlProtocol,傳輸控制協(xié)議)是面向連接的協(xié)議,也就是說,在收發(fā)數(shù)據(jù)前,必須和對方建立可靠的連接。一個TCP連接必須要經(jīng)過三次對話才能建立起來,其中的過程非常復(fù)雜,只簡單的描述下這三次對話的簡單過程:
1)主機(jī)A向主機(jī)B發(fā)出連接請求數(shù)據(jù)包:我想給你發(fā)數(shù)據(jù),可以嗎?,這是第一次對話;
2)主機(jī)B向主機(jī)A發(fā)送同意連接和要求同步(同步就是兩臺主機(jī)一個在發(fā)送,一個在接收,協(xié)調(diào)工作)的數(shù)據(jù)包:可以,你什么時候發(fā)?,這是第二次對話;
3)主機(jī)A再發(fā)出一個數(shù)據(jù)包確認(rèn)主機(jī)B的要求同步:我現(xiàn)在就發(fā),你接著吧!,這是第三次對話。
三次對話的目的是使數(shù)據(jù)包的發(fā)送和接收同步,經(jīng)過三次對話之后,主機(jī)A才向主機(jī)B正式發(fā)送數(shù)據(jù)。
TCP的三次握手過程保證了傳輸?shù)陌踩?,同時會確認(rèn)對方是否接受到信息
斷開的時候進(jìn)行四次
UDP(UserDataProtocol,用戶數(shù)據(jù)報協(xié)議)是一個非連接的協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時就簡單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端,UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計算機(jī)的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應(yīng)用程序每次從隊列中讀一個消息段。
由于不需要像TCP那樣的握手過程,使得UDP的傳輸速度非??旖?,但他不保證傳輸?shù)陌踩?,也不確認(rèn)對方是否接收到信息
實現(xiàn)代碼:
//向指定ip發(fā)送信息
publicstaticvoidmain(String[]args)throwsException{
Sockets=newSocket(InetAddress.getByName(InetAddress.getLocalHost().getHostAddress()),10000);
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
//封裝輸出流對象
BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(s.getOutputStream()));
Stringline;
while(true){
if((line=br.readLine())!=null){
if("1024".equals(line)){
bw.write(line);
bw.newLine();
break;
bw.write(line);
bw.newLine();
bw.flush();
//獲取輸出流對象
//釋放資源
s.close();
}
//接收發(fā)送到本機(jī)的信息
ServerSocketsocket=newServerSocket(10000);
Socketaccept=socket.accept();
BufferedReaderbr=newBufferedReader(newInputStreamReader(accept.getInputStream()));
Stringline;
while((line=br.readLine())!=null){
System.out.println(line);
要讓倆臺進(jìn)行互通就可以實現(xiàn)了,讓他們運(yùn)行到一起可以使用線程進(jìn)行封裝。
UDP使用的是
//創(chuàng)建發(fā)送端的Socket對象(DatagramSocket)
//創(chuàng)建數(shù)據(jù),并把數(shù)據(jù)打包
//DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)
//構(gòu)造一個數(shù)據(jù)包,發(fā)送長度為length的數(shù)據(jù)包到指定主機(jī)上的指定端口號。
使用UDP需要將ip地址固定成ipconfig所顯示的ip網(wǎng)關(guān)等內(nèi)容
DatagramSocketds=newDatagramSocket();
byte[]bys="hello,udp,我來了".getBytes();
DatagramPacketdp=newDatagramPacket(bys,bys.length,InetAddress.getByName("10.102.13.18"),10086);
//調(diào)用DatagramSocket對象的方法發(fā)送數(shù)據(jù)
//voidsend(DatagramPacketp)從此套接字發(fā)送數(shù)據(jù)報包
ds.send(dp);
System.out.println("已發(fā)送:"+newString(dp.getData(),0,dp.getLength()));
//關(guān)閉發(fā)送端
//voidclose()關(guān)閉此數(shù)據(jù)報套接字
ds.close();
DatagramSocketds=newDatagramSocket(10086);
while(true){
//創(chuàng)建一個數(shù)據(jù)包,用于接收數(shù)據(jù)
byte[]bys=newbyte[1024];
DatagramPacketdp=newDatagramPacket(bys,bys.length);
//調(diào)用DatagramSocket對象的方法接收數(shù)據(jù)
ds.receive(dp);
System.out.println("-----");
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無人機(jī)航電系統(tǒng)知識及其考試內(nèi)容試題及答案
- 《血糖與健康》課件
- 食品供應(yīng)鏈管理
- 《現(xiàn)代系統(tǒng)建模與仿真技術(shù)》課件
- 2025年基本藥物培訓(xùn)
- 《國際財務(wù)報告準(zhǔn)則》課件
- 醫(yī)學(xué)脾胃健康科普
- 培訓(xùn)機(jī)構(gòu)學(xué)員成長手冊設(shè)計與應(yīng)用
- 頭上長痘痘的臨床護(hù)理
- 《高效能課件指南》教程
- CB/T 749-1997固定鋼質(zhì)百葉窗
- 譫妄評估培訓(xùn)培訓(xùn)課件
- 五年級下冊道德與法治-《勿忘國恥》
- 真假識別手冊
- 新活素 病例分享課件
- 人音版三年級下冊音樂《搖船調(diào)》課件
- 動脈采血技術(shù)培訓(xùn)課件
- 畢業(yè)論文-顎式破碎機(jī)結(jié)構(gòu)設(shè)計
- 存貨質(zhì)押貸款業(yè)務(wù)管理辦法
- 接觸網(wǎng)平面設(shè)計
- 液壓系統(tǒng)課件(完整)課件
評論
0/150
提交評論