網路程式設計TCP

2021-08-15 18:53:30 字數 3324 閱讀 9787

tcp特點:

1.面向連線的傳輸服務

程式在用tcp協議傳輸資料時 需在源程序埠與目的程序埠之間建立一條tcp傳輸連線

2. 支援位元組流的傳輸

tcp在傳輸過程中將程式提交的資料看成一連串 無結構的位元組流,因此接收端程式資料位元組的起始與終結位置必須有程式自己確定

3.支援雙全工通訊

tcp執行通訊雙方的程式在任何時候都可以傳送資料

4.支援同事建立多個併發的tcp連線

5.支援可靠的傳輸服務

使用確認機制檢查資料是否安全和完整的到達 並提供擁塞控制功能

tcp連線是3次握手 釋放是4次握手 可以通過wireshark抓包

client客戶端:

public class client 

}

server服務端

public static void main(string args) throws unknownhostexception, ioexception
編譯執行

如果想要收到服務端返回給客戶端值則需要在客戶端中新增

inputstream in=socket.getinputstream();

byte buff=new byte[1024];

int len=in.read(buff);

system.out.println(new string(buff,0,len));

服務端中加

outputstream out=socket.getoutputstream();

out.write("返回".getbytes());

tcp複製檔案

客戶端:

public class textclient 

//必須shutdown 不然上面while結束後 下面的讀入流 中readline 回和server裡的while互相等待

s.shutdownoutput();//關閉客戶端輸出流 相當於給流中加入乙個結束標記-1

bufferedreader bufin=new bufferedreader(new inputstreamreader(s.getinputstream())) ;

system.out.print(bufin.readline());

bufr.close();

s.close();

}}

服務端:

public class textserver 

printwriter pw=new printwriter(s.getoutputstream(),true);

pw.println("success");

out.close();

s.close();

ss.close();

}}

併發上傳

客戶端:

public class picclient 

file file=new file(args[0]);

if(!(file.exists() & file.isfile()))

if(!file.getname().endswith(".png"))

if(file.length()>1024*1024*8)

socket socket=new socket("192.168.xx.***",20000);

fileinputstream fis=new fileinputstream(file);

outputstream out=socket.getoutputstream();

byte buf=new byte[1024];

int len=0;

while((len=fis.read(buf))!=-1)

socket.shutdownoutput();

inputstream in=socket.getinputstream();

byte bufin=new byte[1024];

int num=in.read(bufin);

system.out.println(new string(bufin,0,num));

}}

服務端:要有執行緒

public class picserver 	}	

}class picthread implements runnable

public void run()

fileoutputstream fos=new fileoutputstream(file);

byte buf=new byte[1024];

int len=0;

while((len=in.read(buf))!=-1)

outputstream out=s.getoutputstream();

out.write("上傳成功".getbytes());

併發登入

TCP網路程式設計

基於tcp 通訊模型 由上圖可以得出tcp通訊的步驟如下 服務端 1 建立乙個socket,用函式socket 2 繫結ip位址 埠等資訊到socket上,用函式bind 3 設定允許的最大連線數,用函式listen 4 等待來著客戶端的連線請求,用函式accept 5 收發資料,用函式send 和...

網路程式設計 TCP

客戶端 1.建立客戶端的socket服務,指定目的主機和埠 2.為了傳送資料,應該獲取socket中的輸出流 3.獲取socket中的輸入流來獲取服務端的反饋資料 4.關閉資源 服務端 1.建立服務端的serversocket服務,並監聽乙個埠 2.通過accept方法 等待並獲取連線過來的客戶端s...

網路程式設計 TCP

即有傳送緩衝區 接收緩衝區,傳送次數和接收次數不一定對等。報頭長,成本高,需要搭載更多的資料。1.三次握手 通過對ack的確認,建立可靠連線。有超時重傳機制 2.四次揮手 有可能伺服器處理資料的時間較短,即三次揮手 3.狀態圖 2 保證遲來的資料報能被識別並丟棄 4.tcp狀態轉移過程 5.tcp報...