Java客户端和Python服务器之间的套接字消息传递
我尝试在Java客户机和Python服务器之间创建一个套接字消息器。它将一条消息(“Testdata”)从客户端发送到服务器并打印出来。但在从服务器向客户机输入并发送消息之后,我并没有从客户机得到任何输出。客户端“冻结”,必须终止 我的客户端输入有什么问题Java客户端和Python服务器之间的套接字消息传递,java,python,sockets,Java,Python,Sockets,我尝试在Java客户机和Python服务器之间创建一个套接字消息器。它将一条消息(“Testdata”)从客户端发送到服务器并打印出来。但在从服务器向客户机输入并发送消息之后,我并没有从客户机得到任何输出。客户端“冻结”,必须终止 我的客户端输入有什么问题 终端服务器: py socketServer.py Connection from: ('127.0.0.1', 57069) from connected user: Testdata > Test send data.. jav
终端服务器:
py socketServer.py
Connection from: ('127.0.0.1', 57069)
from connected user: Testdata
> Test
send data..
java socketClient
Testdata
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();
}
}
终端客户端:
py socketServer.py
Connection from: ('127.0.0.1', 57069)
from connected user: Testdata
> Test
send data..
java socketClient
Testdata
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服务器:
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客户端:
py socketServer.py
Connection from: ('127.0.0.1', 57069)
from connected user: Testdata
> Test
send data..
java socketClient
Testdata
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在回答中所说的那样用
\r\n
显式完成。您可以查看答案。(@carlos palma)你的客户正在阅读线路,但你的服务器没有发送线路。