繁体   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