udp協議和tcp協議
udp協議(使用者資料報協議): 需要乙個傳送端和接收端;
傳送端:只負責傳送資料,不管接收端是否接收到資料.
在傳輸資料的過程中是允許資料報丟失的;
特點: 1.需要乙個傳送端和接收端;
2.傳送端只負責傳送資料,不管接收端是否接收到資料;
3.在傳輸資料的過程中是允許資料報丟失的;
tcp/ip協議:
特點:1.需要乙個客戶端 和 伺服器端;
2.不允許出現資料報丟失;
3.使用了三次握手的;
tcp:
客戶端:
1.獲得socket物件
socket socket=new socket(address, port);
//引數:address為要連線的電腦ip位址,port為埠
2.然後用socket物件獲得i/o流
outputstream outputstream = socket.getoutputstream();
3.用流寫出檔案(傳送)
outputstream.write(「測試。。。」.getbytes());
4.假如有伺服器回執資訊
inputstream inputstream = socket.getinputstream();
5.然後讀取回執資訊
int read = inputstream.read();
6.最後關閉socket流
socket.close();
public
class tcpclient
socket.shutdownoutput();
//服務端返回資訊處理
inputstream inputstream = socket.getinputstream();
byte c = new
byte[1024];
int len = inputstream.read(c);
system.out.println(new string(c, 0, len));
outputstream.close();
socket.close();
system.out.println("傳送完畢!");
}}
服務端:
1.獲得serversocket物件
serversocket serversocket=new serversocket(port);
//此處port必須跟客戶端埠保持一致, 不然接收不了資料
2.用serversocket物件的accpet()方法,獲得socket物件1
socket socket = serversocket.accept();
3.用獲得的socket物件建立讀取流,讀取客戶端socket發來的訊息
inputstream inputstream = accept.getinputstream();
int read = inputstream.read();
4.關閉socket跟serversocket
socket.close();
serversocket.close();//這個可以不關
public
class tcpserver
outputstream outputstream = socket.getoutputstream();
outputstream.write("接收到了,大兄弟!!!".getbytes());
inputstream.close();
socket.close();
}}
udp:
傳送端:
1.獲得datagramsocket物件
datagramsocket datagramsocket=new datagramsocket();
2.建立資料流,獲取鍵盤輸入
bufferedreader bufferedreader=new bufferedreader(new inputstreamreader(system.in));
3.迴圈把輸入的內容封裝到datagrampacket資料報物件中
string line=null;
while ((line=bufferedreader.readline())!=null)
4.關閉socket流
datagramsocket.close();
public
class udpsent
datagramsocket.close();
}}
獲取端:
1.獲得datagramsocket物件注意要選帶埠引數的構造方法
datagramsocket datagramsocket=new datagramsocket(9001);
2.建立資料報,並建立datagrampacket物件,兩個引數的。
byte bs=new byte[1024];
datagrampacket datagrampacket=new datagrampacket(bs, bs.length);
3.用socket的receive方法獲得資料報
datagramsocket.receive(datagrampacket);
4.用datagrampacket解析資料
byte data = datagrampacket.getdata();
system.out.println(new string(data, 0, data.length));
5.關閉socket流
datagramsocket.close();
public
class udpget
}
TCP協議和UDP協議
前面我們學習了網路的7層模型,其中談到傳輸層的相關協議有tcp transmission control protocol 傳輸控制協議 和udp user datagram protocol 使用者資料報協議 一 tcp協議 tcp transmission control protocol 是一...
TCP協議和UDP協議
tcp transfer control protocol 是面向連線的,所謂面向連線,就是當計算機雙方通訊時必需經過先建立連線,然後傳送資料,最後拆除連線三個過程。tcp在建立連線時又分三步走 第一步,是請求端 客戶端 傳送乙個包含syn即同步 synchronize 標誌的tcp報文,syn同步...
TCP協議和UDP協議
區別 面向連線vs無連線 tcp建立乙個連線需要3次握手ip資料報,斷開連線需要4次握手。另外斷開連線時發起方可能進入time wait狀態長達數分鐘 視系統設定,windows一般為120秒 在此狀態下連線 埠 無法被釋放。udp不需要建立連線,可以直接發起。可靠vs不可靠 tcp利用握手 ack...