尝试使用套接字发送utf8编码的字符串

2024-06-02 09:51:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图发送一个用utf编码的字符串到服务器并从它。但是我无法得到任何响应,因为我认为我从客户端发送的字符串没有正确编码。 下面是我对字符串进行编码的方法:

a= "!@#$%"
u = a.encode('utf-8')
s=socket.socket()
s.connect((ipAddr,portNum))
a=s.recv(1024)
print (a)//prints ok

s.send(u)
s.recv(1024)#blank
print (s.recv(1024))

爪哇语:

^{pr2}$

Tags: 方法字符串服务器客户端编码connectoksocket
1条回答
网友
1楼 · 发布于 2024-06-02 09:51:36

看来你的服务器是用Java编写的,我已经写了一些适合你Java客户端的服务器代码。在

ServerSocket serverSocket = new ServerSocket(50001);
serverSocket.setSoTimeout(3 * 1000);
Socket socket = serverSocket.accept();
System.out.println("Receive new connection: " + socket.getInetAddress());

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
DataInputStream in = new DataInputStream(socket.getInputStream());

out.write("ok");
// out.newLine();
out.flush();

String input = in.readUTF();
System.out.println(input);

out.write(input);
// out.newLine();
out.flush();

而Python客户端没有得到任何响应的原因是in.readUTF(),根据https://stackoverflow.com/a/48266697/7944150,应该先发送消息的长度。在

^{pr2}$

我得到的答复是:

b'ok'
b'!@#$%'

相关问题 更多 >