繁体   English   中英

Python客户端写入Java的writeUTF方法

[英]Python client write to Java's writeUTF method

我有以下无法更改的Java服务器代码段:

 ....
 while(true){
 try {
            System.out.println("Will listen . . .");
            instruction = this.dis.readUTF();  // Socket's dataInputStream
            System.out.println("Got instruction: " + instruction);
        } catch (IOException ex) {
            Logger.getLogger(ServerThread.class.getName()).log(Level.SEVERE, null, ex);
        }

  ....
 } // end while(true)

而且我有以下python的客户端代码:

.... 
self.socket.send(b"GET~CARD\n")
print self.socket.recv(1024)
....

我面临的问题是我可以让客户端将信息发送到服务器,但是服务器不会停止监听,因此它停留在阻塞调用this.dis.readUTF();

如您所见,我尝试在字符串的末尾使用\\n字符,但它始终保持监听状态。 有人知道如何使用readUTF()从python客户端写入Java服务器吗?

这里看看readUTF函数的文档

首先,这很突出

首先,读取两个字节,并以与readUnsignedShort方法完全相同的方式来构造一个无符号的16位整数。 此整数值称为UTF长度,它指定要读取的其他字节数。 然后,通过分组考虑将这些字节转换为字符。 每个组的长度是根据该组的第一个字节的值计算的。 组之后的字节(如果有)是下一组的第一个字节。

在您的python代码中尝试这样的事情

import struct
message = u"GET~CARD\n"
size = len(message)
...
sock.send(struct.pack("!H", size))
sock.send(message)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM