我想通过作为 Python(客户端)和 Java(服务器)的套接字从 Python 向 Java 发送一个对象,但是我不能这样做,我只能看到这个:
无效的流标头:8003635F
我尝试使用 Python-Python 和 Java-Java,没有任何不便。我想知道我的代码是错误的还是我忘记了一些东西。我会留意任何回应。 附代码:
Java 代码
public static void main(String[] args) {
int port = 10002;
try {
ServerSocket server = new ServerSocket(port);
System.out.println("Waiting for clients...");
Socket client = server.accept();
System.out.println("Connect: " + client.getInetaddress());
Vehicle car;
ObjectInputStream ois = new ObjectInputStream(client.getInputStream());
car = (Vehicle) ois.readObject();
System.out.println("Brand: " + car.getBrand() + "Model: " + coche.getModel());
} catch (IOException ex) {
System.out.println(ex.getMessage());
} catch (ClassnotFoundException ex) {
System.out.println(ex.getMessage());
}
}
}
class Vehicle implements Serializable {
private String brand;
private String model;
public Vehicle(String brand,String model) {
this.brand = brand;
this.model = model;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
@Override
public String toString() {
return "Vehicle{" + "brand=" + brand + ",model=" + model + '}';
}
}
Python 代码
class Vehicle():
def __init__(self,brand,model):
self.brand = brand
self.model = model
def show(self):
print("Brand: ",self.brand,"\nmodel: ",self.model)
car = Vehicle("Mazda","3")
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
serverAddress = ("172.16.4.18",10002)
sock.connect(serverAddress)
sock.send(pickle.dumps(car))
sock.close()