Python客户端写入Java';s-writeUTF方法
我为Java服务器提供了以下无法更改的代码片段: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);
....
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
,一切都很顺利!谢谢