为什么套接字不显示结果?

Why doesn't the socket display the result?

我尝试打印出这段代码,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中套接字的关系。

conn, addr = s.accept() 之后的代码永远不会 运行,因为 s.accept 正在阻塞。将客户端套接字的代码移动到一个单独的文件中,然后 运行 分开。

服务器代码:

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()
data = conn.recv(1024)
conn.close()
s.close()

print('Received', repr(data))

客户代码:

import socket

HOST = socket.gethostbyname(socket.gethostname())
PORT = 5050
ADDR = (HOST, PORT)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(ADDR)
s.sendall(b'Hello, world')
s.close()