1. 程式人生 > 其它 >Java Tcp協議服務端和客戶端傳輸資料

Java Tcp協議服務端和客戶端傳輸資料

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();




    }
}