我想通过套接字传输一个整数。 我有一个 python 脚本,它打开一个套接字并等待请求,另一端有一个 Java servlet,它在此套接字上发送请求以获取值。
所有通信工作正常,问题是从 java 获取的值导致 EOF 异常。我已经在 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 echo 套接字工作]
data = connection.recv(16)
if data:
connection.sendall(data)
相反,我想做:
[Python 返回示例值]
connection.sendall('55')
如果我从像 Hercules 这样的客户端发送请求,那么该方法就可以工作。但在Java中会导致EOF异常
[Java Servlet - 发送请求]
socket = new Socket(address, port);
dataInputStream = new DataInputStream(socket.getInputStream());
String content = dataInputStream.readUTF(); //EOFexception
Destination.value = content;
最佳答案
通过使用InputStream而不是DataInputStream解决了问题,编写python套接字以将字符串作为字节发送,并将java接收器更改为读取字节流并转换为字符串(适合我的目的的良好格式)。
关于java - TCP Socket 通信 Java - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47705136/