[英]How to receive object in java socket programming?
我是java網絡編程的新手。
我寫了一個簡單的客戶端 - 服務器代碼,它將類的對象從客戶端發送到服務器。
我使用PrintStream
發送對象,它沒問題,但在使用BufferedReader
時無法在服務器上接收它
客戶代碼:
public class Client3 {
public String username;
public String password;
public static void main(String argv[]) throws IOException
{
Client3 account = new Client3();
account.username = "PJA";
account.password = "123456";
Socket s = new Socket("localhost",6000);
PrintStream pr = new PrintStream(s.getOutputStream());
pr.println(account);
}
}
服務器代碼:
public class Server3 {
public static void main(String argv[]) throws IOException
{
ServerSocket s1 = new ServerSocket(6000);
Socket s = s1.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
Client3 a = new Client3();
a = in.readLine(); // give a compilation error.
}
}
readline()
拋出一個編譯錯誤,因為它只需要一個字符串。
所以我的問題是:“有沒有辦法接收一個班級的對象?”
問:“有沒有辦法接收班級的對象?”
答:是的,有很多方法:
Java RMI
Java SOAP Web服務
您可以使用本機Java序列化並直接寫入Java套接字(基本上,重新發明您自己的RMI): http : //www.coderpanda.com/java-socket-programming-transferring-of-java-objects-through-套接字/ ,或http://www.jguru.com/faq/view.jsp?EID=10472 。 如果將對象標記為“可序列化”,則只需使用outputStream.writeObject()
進行寫入,並使用ObjectInputStream()
進行讀取。
您將對象狀態讀寫為JSON並通過套接字發送JSON文本: http : //www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/
等等
選項3)最接近您的要求。 我也鼓勵你考慮選項4)。 這是一個很好的教程: http : //tutorials.jenkov.com/java-json/jackson-objectmapper.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.