我在Java服务器和Python客户机之间有一个TCP连接。 当“q”从任何发送到另一个连接时,必须关闭。 当我把'q'从python发送到java时,它就起作用了。但是,当我从java向python发送'q'时,它不起作用。我试过打字,但没用。在
Java服务器:
公共类发件人{
public static void main(String[] args) throws IOException {
String fromclient;
ServerSocket Server = new ServerSocket(25000);
System.out.println("TCPServer Waiting for client on port 25000");
while (true) {
Socket connected = Server.accept();
System.out.println(
" THE CLIENT" + " " + connected.getInetAddress() + ":" + connected.getPort() + " IS CONNECTED ");
PrintWriter out = new PrintWriter(connected.getOutputStream(), true);
Scanner sc = new Scanner(System.in);
while (true) {
String input = sc.nextLine();
out.println(input);
}
}
}
}
Python客户端:
^{pr2}$print str(string_data)=='q'语句始终返回false
您需要将Java服务器代码从
out.println(input)
更改为out.print(input)
。还要添加一个out.flush()
,以强制数据不仅在缓冲区被填满后立即发送。在println
-还将向客户端发送linebreak使用
print
它可以按预期工作。在编辑一些附加的。在这种情况下,它有助于Python客户机打印出
data
中的字节。在将Python客户机代码修改为
假设Java上的输入是
q+ENTER
。请参见下面Pathon客户端的输出。在在Java服务器端使用
^{pr2}$out.println
在Java服务器端使用
out.print
这样就很容易发现发送给客户机的额外字节(
0xd 0xa
)。在我认为编码是问题所在。只要注释掉编码部分,代码就可以工作了。在
相关问题 更多 >
编程相关推荐