Ich habe eine TCP-Verbindung zwischen einem Java-Server und Python-Client. Wenn 'q' von einem anderen zum anderen gesendet wird, muss die Verbindung geschlossen sein. Es funktioniert, wenn ich 'q' von Python nach Java sende. Wenn ich jedoch 'q' von Java zu Python sende, funktioniert es nicht. Ich habe versucht, zu tippen, aber keine Verwendung.TCP-Java-Server, Python-Client String nicht gleich
Java Server:
public class Sender {
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 Auftraggeber:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 25000))
while True:
r, _, _ = select.select([client_socket], [], [])
if r:
data = client_socket.recv(4096)
string_data = data.decode('utf-8')
print str(string_data) == 'q'
if str(string_data) == 'q' or string_data == 'Q':
print ('Connection closed')
client_socket.close()
break
else:
print (string_data)
Die Aussage Druck str (string_data) == 'q' immer gibt false zurück
noch das gleiche Problem der Codierung der Java-Seite findout –
die Charset.defaultCharset() oder Systemeigenschaft oder InputStreamReader.getEncoding und verwendet dasselbe auf Python Seite unter Verwendung – Shiva
die Codierung UTF-8 –