【发布时间】:2014-06-29 01:07:34
【问题描述】:
所以我正在从 Kenneth Lambert 的《Python 基础知识》一书中学习 Python,但我遇到了书中的一个程序出现错误的问题。
这里在第 10 章中讨论了客户端和服务器。我的教授要求我们用 Python 键入这些程序,看看它们是如何工作的。第一个程序运行良好,但在一个程序中我遇到了一个错误,这似乎是一个 Windows 错误而不是 Python 错误。
这是第339页的程序:
from socket import *
from time import ctime
from threading import Thread
class ClientHandler(Thread):
"""Handles a client request."""
def __init__(self, client):
Thread.__init__(self)
self._client = client
def run(self):
self._client.send(bytes(ctime() + '\nHave a nice day!' , 'ascii'))
self._client.close()
HOST = "localhost"
PORT = 5000
BUFSIZE = 1024
ADDRESS = (HOST, PORT)
server = socket(AF_INET, SOCK_STREAM)
server.bind(ADDRESS)
server.listen(5)
# The server now just waits for connections from clients
# and hands sockets off to client handlers
while True:
print('Waiting for connection')
client, address = server.accept()
print('...connected from:', address)
handler = ClientHandler(client)
handler.start()
当我运行这个程序时,它会在 Shell 中显示“等待连接”消息。但是,当我尝试使用命令提示符连接到程序时,它会显示以下错误:
C:\Python33>python multi-client-server.py
Traceback (most recent call last):
File "multi-client-server.py", line 30, in <module>
server.bind(ADDRESS)
OSError: [WinError 10048] Only one usage of each socket address (protocol/networ
k address/port) is normally permitted
我们在课堂上没有研究过很多。所以我只是想知道为什么会发生这种情况以及如何解决它。
谢谢!
【问题讨论】:
-
我无法重现您的问题。代码对我来说运行良好。 (我将“localhost”更改为“0.0.0.0”)
-
@pss,当我使用 PORT = 0 时,client.connect() 失败。
标签: python multithreading client-server client python-3.3