我是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-transfering-of-java-objects-through- sockets /或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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句