Python 套接字服务器失败
Python socket server failing
我正在尝试在 python 3.
中启动 UDP 服务器
复制了代码
这是我的确切代码。
import socketserver
class MyUDPHandler(socketserver.BaseRequestHandler):
"""
This class works similar to the TCP handler class, except that
self.request consists of a pair of data and client socket, and since
there is no connection the client address must be given explicitly
when sending data back via sendto().
"""
def handle(self):
data = self.request[0].strip()
socket = self.request[1]
print("{} wrote:".format(self.client_address[0]))
print(data)
if __name__ == "__main__":
HOST, PORT = "localhost", 19446
with socketserver.UDPServer((HOST, PORT), MyUDPHandler) as server:
server.serve_forever()
我只是去掉了handle方法的回复,改了端口号。
当我尝试 运行 时,我得到了这个
$ sudo python3 test.py
File "test.py", line 19, in <module>
with socketserver.UDPServer((HOST, PORT), MyUDPHandler) as server:
AttributeError: __exit__
我正在尝试 运行 在 Python 3.4.2 上安装这个 Raspberry Pi 3,它今天早上工作。
我用谷歌搜索 AttributeError: __exit__
,发现 with
使用 __exit__
等内置方法在完成 运行 后缩进的指令后正常关闭。
完全相同的代码 运行 在我的 windows 机器上(Python 3.6.2)和 运行 在我的 [=38= 上使用的代码完全相同] 而我一整天用它做的唯一一件事就是安装 x11vnc 服务器并插入许多 USB 设备。 (采集卡和 arduino,没有来自不受信任来源的 USB 驱动器)。
所以我的问题是,什么会导致 socketserver
库中出现 Attribute Error: __exit__
。
上下文管理器已添加到 3.6 中的 socketserver
:https://bugs.python.org/issue26404, with commit。
3.6以下,3.4.2中,需要手动调用server_close()
:
try:
server = socketserver.UDPServer((HOST, PORT), MyUDPHandler)
server.serve_forever()
finally:
server.server_close()
我正在尝试在 python 3.
中启动 UDP 服务器 复制了代码这是我的确切代码。
import socketserver
class MyUDPHandler(socketserver.BaseRequestHandler):
"""
This class works similar to the TCP handler class, except that
self.request consists of a pair of data and client socket, and since
there is no connection the client address must be given explicitly
when sending data back via sendto().
"""
def handle(self):
data = self.request[0].strip()
socket = self.request[1]
print("{} wrote:".format(self.client_address[0]))
print(data)
if __name__ == "__main__":
HOST, PORT = "localhost", 19446
with socketserver.UDPServer((HOST, PORT), MyUDPHandler) as server:
server.serve_forever()
我只是去掉了handle方法的回复,改了端口号。
当我尝试 运行 时,我得到了这个
$ sudo python3 test.py
File "test.py", line 19, in <module>
with socketserver.UDPServer((HOST, PORT), MyUDPHandler) as server:
AttributeError: __exit__
我正在尝试 运行 在 Python 3.4.2 上安装这个 Raspberry Pi 3,它今天早上工作。
我用谷歌搜索 AttributeError: __exit__
,发现 with
使用 __exit__
等内置方法在完成 运行 后缩进的指令后正常关闭。
完全相同的代码 运行 在我的 windows 机器上(Python 3.6.2)和 运行 在我的 [=38= 上使用的代码完全相同] 而我一整天用它做的唯一一件事就是安装 x11vnc 服务器并插入许多 USB 设备。 (采集卡和 arduino,没有来自不受信任来源的 USB 驱动器)。
所以我的问题是,什么会导致 socketserver
库中出现 Attribute Error: __exit__
。
上下文管理器已添加到 3.6 中的 socketserver
:https://bugs.python.org/issue26404, with commit。
3.6以下,3.4.2中,需要手动调用server_close()
:
try:
server = socketserver.UDPServer((HOST, PORT), MyUDPHandler)
server.serve_forever()
finally:
server.server_close()