TCP套接字通信Java-Python

TCP套接字通信Java-Python,java,python,sockets,servlets,Java,Python,Sockets,Servlets,我想通过套接字传输一个整数。 我有一个python脚本,它打开一个套接字并等待请求,在另一端有一个Javaservlet,它在这个套接字上发送请求以获取一个值 所有的通信都工作得很好。问题是,从java获得的值会导致EOFEException。我在python脚本中尝试了一些转换和格式(我不是这种语言的专家),但没有任何效果 相反,如果我在python中使用echo套接字,选择所有套接字接收并发送回java,所有这些都可以正常工作 但我需要发送一个简单的值 以下是我使用的代码部分,我尝试过使用f

我想通过套接字传输一个整数。 我有一个python脚本,它打开一个套接字并等待请求,在另一端有一个Javaservlet,它在这个套接字上发送请求以获取一个值

所有的通信都工作得很好。问题是,从java获得的值会导致EOFEException。我在python脚本中尝试了一些转换和格式(我不是这种语言的专家),但没有任何效果

相反,如果我在python中使用echo套接字,选择所有套接字接收并发送回java,所有这些都可以正常工作

但我需要发送一个简单的值

以下是我使用的代码部分,我尝试过使用float,这是一个字符串值:

[Python套接字相关指令]

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(server_address)
sock.listen(1)
connection = sock.accept()
[Python回声套接字工作]

data = connection.recv(16)
if data:
    connection.sendall(data)
相反,我想做:

[Python返回一个示例值]

 connection.sendall('55')
如果我从一个客户端发送请求,比如Java,但在Java中导致EOFEException,那么这是可行的

[Java Servlet-发送请求]

socket = new Socket(address, port);
dataInputStream = new DataInputStream(socket.getInputStream());
String content = dataInputStream.readUTF(); //EOFexception
Destination.value = content;

通过使用InputStream而不是DataInputStream解决了这个问题,编写python套接字以将字符串作为字节发送,并将java接收器更改为读取字节流并转换为字符串(对于我来说格式很好)。

DataInputStream
仅在连接的另一端使用
DataOutputStream
时使用。Python端没有发送任何
DataInputStream
理解的内容。您应该使用常规的
InputStream
。修复该问题后,您将发现另一个问题,即您正在从Python发送字符串值,而不是整数。