Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python客户端写入Java';s-writeUTF方法_Java_Python_Sockets_Client_Server - Fatal编程技术网

Python客户端写入Java';s-writeUTF方法

Python客户端写入Java';s-writeUTF方法,java,python,sockets,client,server,Java,Python,Sockets,Client,Server,我为Java服务器提供了以下无法更改的代码片段: .... while(true){ try { System.out.println("Will listen . . ."); instruction = this.dis.readUTF(); // Socket's dataInputStream System.out.println("Got instruction: " + instruction);

我为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
函数的文档

首先,这一点非常突出

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

在python代码中尝试类似的方法

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

查看
readUTF
功能的文档

首先,这一点非常突出

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

在python代码中尝试类似的方法

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

尝试使用Unicode字符串文字,
u“GET~CARD”
。尝试使用Unicode字符串文字,
u“GET~CARD”
。这正是我要找的!刚用了
sock.send
而不是
sock.write
,一切都很顺利!谢谢这正是我要找的!刚用了
sock.send
而不是
sock.write
,一切都很顺利!谢谢