【发布时间】:2020-05-09 23:05:25
【问题描述】:
我对套接字编程和标准输入/标准输出比较陌生,我需要知道是否有办法在用户点击输入之前从标准输入获取输入。
例如,如果他们键入“F”但没有按回车键,我需要看到那个“F”。 我需要一个基本的聊天应用程序,我需要用户输入到下一行,这样我就可以在不破坏文本的情况下打印传入的消息。
我尝试在用户完成输入之前冻结 STDOUT,但这只是在代码到达输入代码块的那一刻冻结。
当前代码:
### Main Handle ###
def Handler():
print("\nConnected.\n")
print(f"{server.recv(1028).decode()}\n")
def _send():
while True:
sys.stdout = buffer = io.StringIO()
text = input()
sys.stdout = old_stdout
print(buffer.getvalue())
try:
server.sendall(text.encode())
except:
pass
def _get():
while True:
print(stdin)
try:
message = server.recv(1028).decode()
if message == "":
print("\nYou got disconnected from the server, sorry bud. :C")
break
except ConnectionResetError:
print("\nYou got disconnected from the server, sorry bud. :C")
break
print(f"\n{message}")
_gthread = Thread(target = _get)
_gthread.start()
_sthread = Thread(target = _send)
_sthread.start()
while True:
pass
非常感谢任何帮助。 :)
【问题讨论】:
-
您可能可以使用类似 pynput 的东西来抓取按键,而不是使用标准输入。听起来您正在监听按键,除了标准输入之外还有其他方法可以做到这一点
标签: python python-3.x sockets stdin