我尝试在 Java 客户端和 Python 服务器之间创建一个 Socket 消息发送器。它的作用是从客户端向服务器发送消息(“Testdata”)并将其打印出来。但是在输入并从服务器向客户端发送消息后,我没有从客户端得到任何输出。客户端“卡住”并且必须终止。
我的客户端输入有什么问题?
<小时/>终端服务器:
py socketServer.py
Connection from: ('127.0.0.1', 57069)
from connected user: Testdata
> Test
send data..
终端客户端:
java socketClient
Testdata
<小时/>
Python 服务器:
import socket
def socket_server():
host = "127.0.0.1"
port = 35100
server_socket = socket.socket()
server_socket.bind((host, port))
server_socket.listen(2)
conn, address = server_socket.accept()
print("Connection from: " + str(address))
while True:
data = conn.recv(1024).decode()
if not data:
break
print("from connected user: " + str(data))
data = input('> ')
conn.send(data.encode())
print("send data...")
conn.close()
if __name__ == '__main__':
socket_server()
Java 客户端:
private static void socketTest(){
String hostname = "127.0.0.1";
int port = 35100;
try (Socket socket = new Socket(hostname, port)) {
OutputStream output = socket.getOutputStream();
PrintWriter writer = new PrintWriter(output, false);
BufferedReader input =
new BufferedReader(
new InputStreamReader(socket.getInputStream()));
Scanner in = new Scanner(System.in);
String text;
do {
text = in.nextLine();
writer.print(text);
writer.flush();
System.out.println("from server: " + input.readLine());
} while (!text.equals("exit"));
writer.close();
input.close();
socket.close();
}
}
最佳答案
这是因为 python 消息没有像 @carlos palmas 在 this 中所说的那样以 \r\n
显式结束。回答。
关于java - Java 客户端和 Python 服务器之间的 Socket 消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59819488/