【发布时间】:2021-02-20 19:59:11
【问题描述】:
我尝试打印出这段代码,Pycharm 中的命令看起来像是在循环代码并且没有显示结果,我说这是因为终端没有完成它的任务,并且美元符号没有出现.我需要知道该代码是否会产生任何输出。此代码是一些教程的副本,因此不是我创建的。
import socket
HOST = socket.gethostbyname(socket.gethostname())
PORT = 5050
ADDR = (HOST, PORT)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(ADDR)
s.listen()
print('running')
conn, addr = s.accept()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(ADDR)
s.sendall(b'Hello, world')
data = s.recv(1024)
s.close()
print('Received', repr(data))
另外,我需要知道(WSGI,ASGI)之间的关系以及它们与python中套接字的关系。
【问题讨论】:
-
wsgi 和 asgi 是 HTTP 服务器的 2 个不同标准,与 socket 模块无关。
-
s.accept()是一个阻塞操作,您的代码停在那里并等待永远不会发生的连接 -
当我阅读一些资源时,我有时会在同一个地方阅读有关 WSGI 和套接字的信息,所以,我认为它们之间存在关系,对不起,我对它们很陌生,所以我不知道对他们没有任何背景。你能给我发一些学习WSGI和socket的资源吗?
-
@Nullman s.listen 没有阻塞,s.accept 是。
-
@MedoAbdin 每个 SO 问题一次只问一个特定问题。
标签: python python-sockets