【发布时间】:2020-04-14 10:13:32
【问题描述】:
我正在尝试开发一个 TCP 服务器,它侦听端口并实施信号以确保它在预配置的持续时间后关闭。我使用的是 Windows 10 机器,执行后出现错误。这是我的代码:
import socket
import signal
import sys
# create the signal handler
def SigAlarmHandler(signal, frame):
print("Received alarm... Shutting Down server...")
sys.exit(0)
signal.signal(signal.SIGALRM, SigAlarmHandler)
signal.alarm(100)
print("Starting work... waiting for quiting time...")
while True:
# define the target host and port
host = '127.0.0.1'
port = 444
# define and create the server socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# bind the server to incoming client connection
server.bind((host, port))
# start the server listener
server.listen(3)
# establish connection with the client
while True:
client_socket, address = server.accept()
print("connection received from %s" % str(address))
message = 'thank you for connecting to the server' + "\r\n"
client_socket.send(message.encode('ascii'))
client_socket.close()
pass
这是错误:
Traceback (most recent call last):
File "C:/Users/user/Desktop/pythons/tcpserver.py", line 19, in <module>
signal.signal(signal.SIGALRM, SigAlarmHandler)
AttributeError: module 'signal' has no attribute 'SIGALRM'
【问题讨论】:
-
代码似乎运行良好。不确定您的结构,但可能是您正在导入一个名为 signal.py 的文件,尽管这看起来很奇怪,因为找到了 signal.signal()。另一种可能性是模块以某种方式搞砸了,您可能需要重新安装。希望那里有帮助。
标签: python windows signals python-sockets