Java Tcp協議服務端和客戶端傳輸資料
阿新 • • 發佈:2022-05-09
tcp協議,
優點:連線可靠,不會丟包,資料按先後順序到達
缺點:速度慢,偶爾丟包
服務端:
public class tcpServer { public static void main(String[] args) throws IOException { // 資料流傳輸 ServerSocket serverSocket =null; OutputStream outputStream =null; DataOutputStream dataOutputStream=null; Socket socket =null; InputStream inputStream =null; DataInputStream dataInputStream =null; // ====================================================== try { serverSocket = new ServerSocket(8080);//建立伺服器埠 System.out.println("---服務端已啟動---"); // 讓伺服器迴圈,一直處理 while (true){ socket = serverSocket.accept();//接收並返回一個物件 // 取出訊息 inputStream = socket.getInputStream();//獲取輸入流 dataInputStream = new DataInputStream(inputStream);//封裝輸入流內容 String str = dataInputStream.readUTF();//拿到傳輸過來的文字資訊 System.out.println("接收到了客戶端請求:" + str); // 返回訊息給客戶端 outputStream= socket.getOutputStream(); dataOutputStream= new DataOutputStream(outputStream); String response= "hello"; dataOutputStream.writeUTF(response); } } catch (IOException e) { e.printStackTrace(); }finally { serverSocket.close(); socket.close(); inputStream.close(); dataInputStream.close(); } } }
客戶端:
public class tcpClient { public static void main(String[] args) throws IOException { Socket socket = new Socket(); OutputStream outputStream = null; InputStream inputStream = null; DataInputStream dataInputStream = null; DataOutputStream dataOutputStream=null; socket= new Socket("127.0.0.1",8080); System.out.println("---客戶端---"); String request = "你好aaaa"; System.out.println("客戶端傳送:" +request); outputStream= socket.getOutputStream(); dataOutputStream = new DataOutputStream(outputStream); dataOutputStream.writeUTF(request); // 接收伺服器返回內容 inputStream= socket.getInputStream(); dataInputStream=new DataInputStream(inputStream); String response = dataInputStream.readUTF(); System.out.println("伺服器響應:" + response); // 釋放資源 socket.close(); outputStream.close(); inputStream.close(); dataInputStream.close(); dataOutputStream.close(); } }