首页 > 解决方案 > 如何从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")

在此处输入图像描述

标签: pythonsocketsserversocket

解决方案


推荐阅读