gpt4 book ai didi

Java ObjectInputStream(服务器\客户端)

转载 作者:行者123 更新时间:2023-12-02 07:19:40 25 4
gpt4 key购买 nike

服务器线程

package schatserver;

public ServerThread(Socket socket) {
this.socket = socket;
this.start();
}



public void run() {
try {
ObjectInputStream inputStream = new ObjectInputStream(this.socket.getInputStream());
ObjectOutputStream outputStream = new ObjectOutputStream(this.socket.getOutputStream());
container = (Message) inputStream.readObject();
.....
..... etc

“消息类”包含服务器端和客户端

public class Message implements Serializable {

private String login;
private String message;
private String[] users;
private Date time;

public Message(String login, String message){ //for client
this.login = login;
this.message = message;
this.time = java.util.Calendar.getInstance().getTime();
}


public Message(String login, String message, String[] users){//for server
this.login = login;
this.message = message;
this.time = java.util.Calendar.getInstance().getTime();
this.users = users;
}

尝试发送对象“消息”

private static Message message;

public void Connect() {
try {
sock = new Socket(ClientConfig.HOST, ClientConfig.PORT);
System.out.println("Connected with: " + ClientConfig.HOST);
ObjectOutputStream out = new ObjectOutputStream(sock.getOutputStream());
out.writeObject(message);
out.flush();

在这一行获取“java.lang.ClassNotFoundException:socketchatclient.Message”

 container = (Message) inputStream.readObject();  

有人可以解释一下我应该如何发送对象消息吗?

socketchatclient。 - 这是客户端包

最佳答案

java.lang.ClassNotFoundException: socketchatclient.Message

这意味着您正在尝试反序列化您没有的类。客户端上的代码很可能与服务器上的代码不同,并且客户端已序列化它所具有的类,但除非服务器在同一包中也有此类,否则无法反序列化它。

我建议您为可序列化对象使用一个通用模块,并且客户端和服务器共享以确保两端都可用相同的类。

关于Java ObjectInputStream(服务器\客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14426205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com