我用下面的代码创建了一个服务器 python(我认为其余的代码不是必需的):
while 1:
data = conn.recv(BUFFER_SIZE)
if not data: break
print "received data:", data
conn.send(data+'\r\n')
conn.close()
当我尝试使用 Java 客户端接收回显时,在控制台上打印时收到一条奇怪的消息:
Mensaje recibido = java.io.DataInputStream@1cf2a0ef
在服务器端,我收到了良好的消息:Hola Mundo。
Java 代码为:
DataInputStream ims;
String data;
s = new Socket(HOST,PORT);
oms = new DataOutputStream(s.getOutputStream());
ims = new DataInputStream(s.getInputStream());
oms.writeUTF(ms);
ims.read();
data = ims.toString();
oms.close();
ims.close();
s.close();
return data;
我认为 ims.toString() 可能是错误的。
最佳答案
您需要的是将数据分配给从流中读取的字符串:
data=ims.readUTF();
流中的 toString() 方法只是返回对象 id 的表示形式,没有任何意义。
参见http://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html#readUTF()
关于java - 将 Java 客户端与 Python 服务器连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29829036/