簡體   English   中英

從套接字讀取字節

[英]Read bytes from socket

我想讀取服務器寫入套接字的確切字節數(精確長度)。 例如,如果服務器寫“ Hello”,下一次服務器寫(“ world”)。 因此,我需要將這兩個寫入捕獲為來自客戶端套接字的兩個讀取。 我已經實現了以下服務器和客戶端,以演示我的問題。 在該示例中,輸出類似於以下內容

1234 ... 89 90 ........ 1034 1035 ...... 2004

我期望的是1

2

3

2004年

我該如何做到這一點。

//server
 ServerSocket server = new ServerSocket(9999);
        Socket s =server.accept();
        InputStream stream = s.getInputStream();
        byte[] by = new byte[1024];

        while(true){
            stream.read(by);
            String received = new String(by, 0, by.length, "ISO8859_1");
            System.out.println(received);
        }


//client
            Socket s = new Socket("localhost", 9999);
            OutputStream out =s.getOutputStream();
            int i =0;
            while(true){
                i++;
                byte[] msg=Integer.toString(i).getBytes();
                out.write(msg);
            }

可以請一個人幫我做這個嗎..

您不能直接使用TCP。 TCP是一種流協議,它沒有消息。

您需要在此之上構建自己的“協議”。 最簡單的方法是先寫下一條消息將包含的字節數,然后寫消息。

在客戶端,您首先要讀取消息大小,然后讀取整個消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM