python - 如何从python中的套接字服务器获取完整字符串而不是一个字节?
问题描述
我在学校有一个项目,所以我需要从用户(客户端)那里获得完整的消息,然后我需要对它进行一些操作,在这个任务中,作为客户端,我从命令行使用 Windows telnet。所以我只得到一个字节(一个字母)但我需要在“Enter”按钮后获得完整的字符串,请帮助我如何做到这一点?
import socket
PORT = 2020
IP = "127.0.0.1"
BUFFER = 2048
MAX_CLIENTS = 10
SHUTDOWN_CODE = 1
CONNECTION_CODE = 1
def listen():
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, CONNECTION_CODE)
connection.bind((IP, PORT))
connection.listen(MAX_CLIENTS)
data = ""
data_str = ""
while True:
client_socket, address = connection.accept()
while True:
data = client_socket.recv(BUFFER)
data_str = data.decode("utf-8")
data_str = data_str.strip("/n")
data_str = data_str.strip("/r")
if len(data) == 0:
client_socket.shutdown(SHUTDOWN_CODE)
client_socket.close()
print("Disconnected!")
break
elif data:
client_socket.sendall(data)
print (data_str)
if __name__ == "__main__":
try:
listen()
except socket.error:
print("Server Error")
解决方案
推荐阅读
- kubernetes - Terraform GCP:无法访问 Private Kubernetes Master 以创建 kubernetes_secret
- json - 在 Rest API 中创建/更新期间返回要选择的记录列表的最佳方式
- arrays - React Promise 返回 Firebase 数组
- javascript - 如何根据Angular中数组的值更改tr颜色
- angular - Typescript:嵌套函数的泛型类型
- entity - PathGraphics 无法实时工作或运行时生成
- javascript - Firebase Cloud Functions 版本控制
- qt - 在 QML 中更改组合框颜色的正确方法
- php - 使用 PHP 的表 SQL
- python - 将列表列表解析为字典到熊猫 DataFrame 时忽略错误