如何将Java对象的实例从Python传递到Java应用程序
我有一个Java应用程序,它有一个套接字侦听器,并通过特定端口(比如6500)侦听TCP事件。当接收到数据时,它将数据类型转换为一个特定的java对象——EventObj,该对象具有特定的字段。 例如-EventObj.java如何将Java对象的实例从Python传递到Java应用程序,java,python,sockets,Java,Python,Sockets,我有一个Java应用程序,它有一个套接字侦听器,并通过特定端口(比如6500)侦听TCP事件。当接收到数据时,它将数据类型转换为一个特定的java对象——EventObj,该对象具有特定的字段。 例如-EventObj.java public class EventObj { private String firstName; private String lastName ; // setters and getters } 下面是通过套接字接收数据并对其进行类型转换的代
public class EventObj {
private String firstName;
private String lastName ;
// setters and getters
}
下面是通过套接字接收数据并对其进行类型转换的代码片段EventObj-
Socket clientSocket = null;
while (keepRunning) {
try {
clientSocket = null;
//wait for an incoming call
clientSocket = serverSocket.accept();
} catch (IOException e) {
// log error
}
if(clientSocket == null){
continue;
}
ObjectOutputStream objectOutputStream = null;
ObjectInputStream objectInputStream = null;
EventObj event = null;
try{
objectInputStream = new
ObjectInputStream(clientSocket.getInputStream());
objectOutputStream = new ObjectOutputStream(clientSocket.getOutputStream());
event = (EventObj) objectInputStream.readObject();
/// other parts of the code
}
//// other parts of the code
}
如果我要从Python通过套接字连接发送消息,那么如何在Python中创建EventObj实例并将其发送到Java应用程序,以便序列化不会失败
这是我的Python代码-
#!/usr/bin/env python
import socket
HOST = "localhost"
PORT = 6502
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.sendall("I NEED TO SEND MY SERIALIZED OBJECT SO JAVA UNDERSTANDS IT")
有什么建议吗?如果您真的想实现它,这里是规范 我建议不要使用java的对象序列化 JSON是这类事情的常用语言 Python有json包 Java有Jackson的ObjectMapper来读取json 如果您真的想变得有趣,可以将序列化的第一级设置为bean属性的名称,并反射地设置值:
如果您真的想实现它,这里是规范 我建议不要使用java的对象序列化 JSON是这类事情的常用语言 Python有json包 Java有Jackson的ObjectMapper来读取json 如果您真的想变得有趣,可以将序列化的第一级设置为bean属性的名称,并反射地设置值:
我理解使用JSON很容易做到这一点(问题中应该提到),但幸运的是,由于某些限制,我无法更改服务器端代码。我理解使用JSON很容易做到这一点(问题中应该提到),但幸运的是,由于某些限制,我无法更改服务器端代码。