Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何打印输入上方的内容?_Python_Python 3.x - Fatal编程技术网

Python 如何打印输入上方的内容?

Python 如何打印输入上方的内容?,python,python-3.x,Python,Python 3.x,我正在用套接字做一个消息传递工具 我遇到的一个问题是,您需要输入以获取用户消息 比如说 用户>>你好 用户2>>您好 你>> 当有输入时,您如何接收消息并将其显示在输入上方 因此,如果您收到一条消息,它将是: 用户>>你好 用户2>>您好 用户1>>很高兴认识你 你>> 这是我目前掌握的代码: import socket import select import errno import sys HEADER_LENGTH = 10 IP = "127.0.0.1" PORT = 1234

我正在用套接字做一个消息传递工具

我遇到的一个问题是,您需要输入以获取用户消息

比如说

用户>>你好

用户2>>您好

你>>

当有输入时,您如何接收消息并将其显示在输入上方

因此,如果您收到一条消息,它将是:

用户>>你好

用户2>>您好

用户1>>很高兴认识你

你>>

这是我目前掌握的代码:

import socket
import select
import errno
import sys

HEADER_LENGTH = 10
IP = "127.0.0.1"
PORT = 1234

my_username = input('Username: ')

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((IP,PORT))
client_socket.setblocking(False)

username = my_username.encode("utf-8")
username_header = f"{len(username):<{HEADER_LENGTH}}".encode("utf-8")
client_socket.send(username_header + username)


def send_message():
    message = input(f"{my_username} > ")

    if message:
        message = message.encode("utf-8")
        message_header = f"{len(message):<{HEADER_LENGTH}}".encode("utf-8")
        client_socket.send(message_header + message)

def receive_message():
    try:    
        while True:
            #receive things
            username_header = client_socket.recv(HEADER_LENGTH)
            if not len(username_header):

                print("connection closed by the server")
                sys.exit()

            username_length = int(username_header.decode("utf-8"))
            username = client_socket.recv(username_length).decode("utf-8")

            message_header = client_socket.recv(HEADER_LENGTH)
            message_length = int(message_header.decode("utf-8"))
            message = client_socket.recv(message_length).decode("utf-8")
            print(f"{username} > {message}")

    except IOError as E:
        if E.errno != errno.EAGAIN and E.errno != errno.EWOULDBLOCK:
            print('Reading error',str(e))
            sys.exit()

    except Exception as e:
        print('General Error ',str(e))
        sys.exit()


running = True
while running:
    send_message()
    receive_message()
导入套接字
导入选择
输入错误号
导入系统
标题长度=10
IP=“127.0.0.1”
端口=1234
我的用户名=输入('username:'))
client\u socket=socket.socket(socket.AF\u INET,socket.SOCK\u流)
客户端_套接字连接((IP,端口))
客户端\u套接字锁定(错误)
用户名=我的用户名。编码(“utf-8”)
用户名\头=f“{len(用户名):”)
如果消息:
消息=消息编码(“utf-8”)
消息头=f“{len(消息):{message}”)
除IOE错误外:
如果E.errno!=errno.EAGAIN和E.errno!=errno.ewoldblock:
打印('读取错误',str(e))
sys.exit()
例外情况除外,如e:
打印('一般错误',str(e))
sys.exit()
运行=真
运行时:
发送消息()
接收消息()
看看这个答案:看看这个答案: