使用Java編寫TCP協議發送和接收數據接口


TCP協議接收數據的步驟:

A:創建接收數據的Socket對象

  創建對象的時候要指定端口

B:監聽客戶端連接

    等待客戶端連接

C:獲取Socket對象的輸入流(字節流)

D:讀數據,並顯示在控制台

E:釋放資源

服務器:

public class FileServerDemo {

    public static void main(String[] args) throws IOException {
        //創建服務器對象
        ServerSocket ss = new ServerSocket(8080);
        //監聽客戶端連接
        Socket s = ss.accept();
        //包裝通道內的輸入流
        BufferedInputStream bis = new BufferedInputStream(
                s.getInputStream());
        //把數據寫入文件
        BufferedOutputStream bos = new BufferedOutputStream(
                new FileOutputStream("C:\\Users\\MA\\Desktop\\IOtest\\copy.jpg"));
        byte[] bys = new byte[1024];
        int len = 0;
        while((len = bis.read(bys))!=-1){
            bos.write(bys,0,len);
        }
        //把通道內的輸出流包裝
        BufferedWriter write = new BufferedWriter(new OutputStreamWriter(
                s.getOutputStream()));
        write.write("文件上傳成功");
        write.newLine();
        write.flush();
        //釋放資源
        bos.close();
        s.close();
        ss.close();
    }
}

TCP協議發送數據的步驟:

A:創建發送數據的Socket對象

  創建對象的時候要指定主機和端口

B:獲取Socket對象的輸出流(字節流)

C:寫數據

D:釋放資源

客戶端:

public class FileClientDemo {

    public static void main(String[] args) throws IOException {
        //創建客戶端對象
        Socket s = new Socket("172.24.60.182",8080);
        //讀取文件的數據
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\MA\\Desktop\\電路指導書\\QQ圖片20180627212519.jpg"));
        //把通道內的輸出流包裝
        BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
        byte[] bys = new byte[1024];
        int len = 0;
        while((len=bis.read(bys))!=-1){
            bos.write(bys,0,len);
        }
        //給服務器一個反饋
        s.shutdownOutput();//禁用輸出流
        //獲取服務器的反饋信息
        BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String data = reader.readLine();
        System.out.println("client:"+data);
        bis.close();
        s.close();
    }
}

 

轉載於:https://www.cnblogs.com/mxj961116/p/9348732.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM