python - 客户端和服务器之间的套接字编程以将小写单词/句子转换为大写单词/句子
问题描述
我刚开始使用python,我正在尝试运行一个代码,其中客户端以小写形式向服务器发送消息,并且服务器以大写形式返回输出。代码运行正常,但输出为:
Message from Server b"MESSAGE FROM CLIENT:B'POLL OIUOIU IUO'"
我在 : 之后得到了那个“B”,就像我展示的那样⬆️
客户端的代码:
import socket
msgFromClient = input('Enter a word/sentence in lower case: ')
bytesToSend = str.encode(msgFromClient)
serverAddressPort = ("127.0.0.1", 20001)
bufferSize = 1024
# Create a UDP socket at client side
UDPClientSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
# Send to server using created UDP socket
UDPClientSocket.sendto(bytesToSend, serverAddressPort)
msgFromServer = UDPClientSocket.recvfrom(bufferSize)
msg = "Message from Server {}".format(msgFromServer[0])
print(msg)
服务器代码:
import socket
localIP = "127.0.0.1"
localPort = 20001
bufferSize = 1024
msgFromServer = "Hello UDP Client"
#bytesToSend = str.encode(msgFromServer)
# Create a datagram socket
UDPServerSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
# Bind to address and ip
UDPServerSocket.bind((localIP, localPort))
print("UDP server up and listening")
# Listen for incoming datagrams
while(1):
#message,bytesAddressPair = UDPServerSocket.recvfrom(bufferSize)
message,address = UDPServerSocket.recvfrom(bufferSize)
#message = bytesAddressPair[0]
#address = bytesAddressPair[1]
clientMsg = f'Message from Client:{message}'
clientIP = f"Client IP Address:{address}"
print(clientMsg)
print(clientIP)
bytesToSend = str.encode(clientMsg.upper())
# Sending a reply to client
UDPServerSocket.sendto(bytesToSend, address)
如何仅从服务器获得回复,例如:
来自服务器的消息:POLL OIUOIU IUO
(任何从小写转换为大写的句子/单词)
请帮忙。谢谢!
解决方案
有两个错误。每端一个。这是由于使用repr()
了字节,在将其格式化为字符串时使用。这也是增加周围环境的原因'...'
。有两个错误,一个由 指示,b
另一个由B
(b.. 的大写)指示。
首先将字节转换为字符串,以修复b
错误:
bytesFromServer, _ = UDPClientSocket.recvfrom(bufferSize)
msgFromServer = bytesFromServer.decode()
B
错误源于:
message,address = UDPServerSocket.recvfrom(bufferSize)
将消息重命名为 messageBytes 或类似名称,并如上所示正确解码。
推荐阅读
- javascript - 在 MUI v5 ReactJS 上从 widthWidth 更改为 useWidth
- r - argondash 不适用于水平布局
- django - 密码重置电子邮件将发送至主机电子邮件
- xcode - 是否可以在 / 而不是 /api 下拥有 Next.js API?
- ios - StackView 中的多个 CollectionView
- javascript - 如何通过 Selenium 从 JavaScript 中的函数中提取“文本”?
- javascript - 定制CKAN数据门户网站(用户界面)
- javascript - 为动画文本输出编写脚本的问题
- smartsheet-api - Excel 到智能表格
- css - 当父折叠折叠时,如何防止绝对 div 消失?(材质-UI)