gpt4 book ai didi

Python Server Client程序错误: "OSError: [WinError 10048]"

转载 作者:行者123 更新时间:2023-11-28 17:41:30 24 4
gpt4 key购买 nike

所以我正在根据 Kenneth Lambert 的 Fundamentals of 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

我们在类里面没怎么研究过这个。所以我只是想知道为什么会发生这种情况以及如何解决它。

谢谢!

最佳答案

因此,根据您的问题:

We haven't studied this in class a lot. So I'm just wondering why this happens and how to fix it.

原因:您正在尝试从 Windows 操作系统上的两个不同 CMD 运行相同的代码片段。因此,当您最初执行代码片段时,服务器开始监听端口号 5000,然后当您从第二个 CMD wndow 执行相同的代码片段时,它与已在使用的套接字发生冲突由第一个。我在 Windows 8 上对此进行了测试。 enter image description here

如何修复:要解决此问题,您只需在第二次执行代码片段时使用不同的端口号,这样 socket(IP+port) 就不会与前一个冲突。只需编辑您的代码并输入 PORT = 15200 并使用不同的名称保存此文件。(我也提供了下面的代码。)现在尝试从 CMD 窗口执行第一个代码片段文件,然后执行您现在从第二个 CMD 窗口创建的第二个代码片段文件。问题将得到解决!

代码:

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 = 15200 # Port number was changed here
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()

如果您愿意,请查看here对于基本的客户端-服务器问题。

关于Python Server Client程序错误: "OSError: [WinError 10048]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23596009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com