套接字Java客户端-Python服务器
我正在尝试实现Java-python客户端/服务器套接字。客户端使用Java,服务器使用python编写
Java客户端
import java.io.*;
import java.net.*;
import java.lang.*;
public class client {
public static void main(String[] args) {
try{
Socket socket=new Socket("localhost",2004);
DataOutputStream dout=new DataOutputStream(socket.getOutputStream());
DataInputStream din=new DataInputStream(socket.getInputStream());
dout.writeUTF("Hello");
dout.flush();
System.out.println("send first mess");
String str = din.readUTF();//in.readLine();
System.out.println("Message"+str);
dout.close();
din.close();
socket.close();
}
catch(Exception e){
e.printStackTrace();}
}
}
Python服务器
import socket
soc = socket.socket()
host = "localhost"
port = 2004
soc.bind((host, port))
soc.listen(5)
while True:
conn, addr = soc.accept()
print ("Got connection from",addr)
msg = conn.recv(1024)
print (msg)
print(len(msg))
if "Hello"in msg:
conn.send("bye".encode('UTF-8'))
else:
print("no message")
从客户端到服务器的第一条消息正确传递,但从服务器到客户端的第二条消息正确传递。使用telnet,我检查服务器是否发送了邮件,但客户端陷入了僵局,没有收到邮件。我不明白为什么。
谢谢
-
您的缩进似乎已在Python服务器中关闭,因为无法将消息发送回客户端的代码。
即使修复了缩进之后,您的服务器实现也不正确,而
msg
不是String
。您需要msg
按如下所示进行解码。另外,short
由于要DataInputStream#readUTF
在客户端中使用,因此您需要发送消息的长度作为:import socket soc = socket.socket() host = "localhost" port = 2004 soc.bind((host, port)) soc.listen(5) while True: conn, addr = soc.accept() print("Got connection from",addr) length_of_message = int.from_bytes(conn.recv(2), byteorder='big') msg = conn.recv(length_of_message).decode("UTF-8") print(msg) print(length_of_message) # Note the corrected indentation below if "Hello"in msg: message_to_send = "bye".encode("UTF-8") conn.send(len(message_to_send).to_bytes(2, byteorder='big')) conn.send(message_to_send) else: print("no message")
-
Java套接字。服务器-客户端通信
2021-01-29 关注 0 浏览112 1答案
-
Java套接字,客户端和服务器
2021-02-01 关注 0 浏览103 1答案
-
使用asyncio的Python简单套接字客户端/服务器
2021-01-29 关注 0 浏览125 1答案
-
使用套接字的客户端-服务器-客户端通信
2021-01-30 关注 0 浏览120 1答案
-
带套接字的Java客户端/服务器应用程序?
2021-01-30 关注 0 浏览92 1答案
-
Java多线程客户端/服务器-java.net.SocketException:套接字已关闭
2021-01-29 关注 0 浏览164 1答案
-
是否可以在客户端和服务器端都关闭Java套接字?
2021-01-30 关注 0 浏览119 1答案
-
java.net.SocketException:套接字已关闭TCP客户端服务器通信
2021-01-30 关注 0 浏览100 1答案
-
Java套接字:检查客户端是否能够从服务器接收消息
2021-01-29 关注 0 浏览108 1答案
-
Java客户端和C ++服务器通过TCP套接字发送和接收
2021-01-30 关注 0 浏览79 1答案