Я пишу коды, которые Python-клиент отправляет String, а JAVA-сервер получает их, а затем JAVA-сервер отправляет String, а Python-клиент получает их.
Но я не могу добавить строку кода, которую Python-клиент отправляет String и JAVA-серверуполучает его снова.
Я использую BufferedReader для получения входного потока и чтения его с использованием readLine и utf-8.И я использую PrintWriter для получения выходного потока и отправки строки, но когда я использую BufferedReader после PrintWriter, я не могу получить строку от клиента Python.
Почему JAVA BufferedReader не может получить строку от клиента Python после отправки строки с помощьюPrintWriter?
Ниже приведены мои коды.
Код сервера JAVA:
package solution;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class sol {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(8000);
Socket socket = server.accept();
BufferedReader br = new BufferedReader(
new InputStreamReader(
socket.getInputStream(), "UTF-8"
)
);
String a, b, c, d;
a = br.readLine();
b = br.readLine();
c = br.readLine();
System.out.println(a);
System.out.println(b);
System.out.println(c);
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
pw.print("Hello");
d = br.readLine(); // I can't receive? read? String from Python client..
System.out.println(d);
pw.close();
br.close();
socket.close();
server.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
Код клиента Python:
from socket import *
from select import select
HOST = '' // sorry it is my ip
PORT = 8000
client = socket()
try:
client.connect((HOST,PORT))
client.sendall(bytes("A\nB\nC\n", encoding = 'utf8'))
data = client.recv(1024)
data = data.decode()
print(data)
client.send(bytes("D\n", encoding = 'utf8'))
client.close()
except Exception as e:
print(e)