Java使用TCP實(shí)現(xiàn)數(shù)據(jù)傳輸實(shí)例詳解
TCP所提供服務(wù)的主要特點(diǎn):
1.面向連接的傳輸;
2.端到端的通信;
3.高可靠性,確保傳輸數(shù)據(jù)的正確性,不出現(xiàn)丟失或亂序;
4.全雙工方式傳輸;
5.采用字節(jié)流方式,即以字節(jié)為單位傳輸字節(jié)序列;
6.緊急數(shù)據(jù)傳送功能。
TCP傳輸需要建立客戶端和服務(wù)器端,即Socket和Server Socket , 建立連接后,通過Socket中的IO流進(jìn)行數(shù)據(jù)的傳輸 。傳輸結(jié)束后關(guān)閉Socket。
客戶端和服務(wù)器端是兩個(gè)獨(dú)立的應(yīng)用程序。
以下是實(shí)現(xiàn)基本的TCP數(shù)據(jù)傳輸?shù)腄emo code:
package javase.day18; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class TransTextDemo { public static void main(String[] args) { } } class TcpClient2{ public static void main(String[] args) throws Exception{ System.out.println("client start..."); Socket s = new Socket("192.168.1.2",10005); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); String sendDataStr=null; while((sendDataStr=br.readLine())!=null){ if(sendDataStr.equals("bye")){ break; } bw.write(sendDataStr); bw.newLine(); bw.flush(); } bw.close(); } } class TcpServer2{ public static void main(String[] args) throws Exception{ System.out.println("server start..."); ServerSocket ss = new ServerSocket(10005); Socket s = ss.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); String receiveDataStr=null; while((receiveDataStr=br.readLine())!=null){ if(receiveDataStr.equals("bye")){ break; } System.out.println("receive data:"+receiveDataStr); } } }