[英]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.