簡體   English   中英

如何在java socket編程中接收對象?

[英]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()拋出一個編譯錯誤,因為它只需要一個字符串。

所以我的問題是:“有沒有辦法接收一個班級的對象?”

問:“有沒有辦法接收班級的對象?”

答:是的,有很多方法:

  1. Java RMI

  2. Java SOAP Web服務

  3. 您可以使用本機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()進行讀取。

  4. 您將對象狀態讀寫為JSON並通過套接字發送JSON文本: http//www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

  5. 等等

選項3)最接近您的要求。 我也鼓勵你考慮選項4)。 這是一個很好的教程: http//tutorials.jenkov.com/java-json/jackson-objectmapper.html

暫無
暫無

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

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