簡體   English   中英

讀取我從Server Java發送的對象

[英]Reading Object sent by me from Server Java

您好,我正在嘗試將對象發送到服務器,然后在服務器接收到該對象之后,從服務器獲取該對象,然后在客戶端輸出中將其作為String讀取。 我最初發送的消息似乎可以正常工作,但之后的所有工作都沒有,這是我的代碼:

import java.io.*;
import java.net.*;


public class GUGLi {
    static Socket socket = null;
    static ObjectOutputStream out = null;
    static ObjectInputStream in = null;
    String host = "host";

       public static void main(String[] args) throws IOException {

    try {
        OpenPort();
        InfoSent();
        ReadInfo();



        String line;
        while ((line = in.toString()) != null) {
            System.out.println(line);
        }

    } catch (UnknownHostException e) {
        System.err.println("Don't know about host: " + "host");
        System.exit(1);
    } catch (IOException e) {
        System.err.println("Couldn't get I/O for "
                + "the connection to: " + "host");
        System.exit(1);
    in.close();
    socket.close();
    out.close();
     }
    }
public static void OpenPort() throws UnknownHostException, IOException{
        socket = new Socket ("host", 7879);
    }
public static void InfoSent()throws IOException {
            Student info = new Student (22, "Guglielmo", "Male",
                    "email", "#");
           out = new ObjectOutputStream(socket.getOutputStream());  
           out.writeObject(info);
           System.out.println("Sent: " + info);
           out.flush();
           }
 public static void ReadInfo()throws IOException {
         in = new ObjectInputStream(socket.getInputStream());


}
       }

line = in.toString()不讀取行。 它將InputStream轉換為其字符串表示形式。 您需要調用read方法。 如果希望讀取行,則需要BufferedInputStream.readLine() 但是,如果你在同一個插座閱讀對象不能混用流/讀取器的類型,所以你應該閱讀readUTF()並寫writeUTF()在另一端。

您遇到的第一個問題是您沒有像@EJP所說的那樣調用閱讀方法,因此請參閱他的回答以獲取更多詳細信息。

編輯:我已經刪除了有關無法在InputStream接收數據的信息。 我以為您的socket未連接到另一個客戶端是錯誤的,因為我以為String host = "host"將連接到回送地址,並且我沒有看到任何代碼將數據發送回InputStream

我建議您閱讀一些教程以清除該問題。 我建議您有關套接字的Java教程要有很強的基礎。 它將說明您需要的一切。

暫無
暫無

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

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