问题描述
我尝试打印出这段代码,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,socket.SOCK_STREAM)
s.connect(ADDR)
s.sendall(b'Hello,world')
s.close()