Socket没有属性AF_INET?

8 投票
1 回答
18715 浏览
提问于 2025-04-18 01:12

我正在做一本教科书上的socket编程作业,使用的是UDP连接。

这是我的UDP服务器代码:

from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print('The server is ready to receive:')
while 1:
    message, clientAddress = serverSocket.recvfrom(2048)
    modifiedMessage = message.upper()
    serverSocket.sendto(modifiedMessage, clientAddress)

这是我的UDP客户端代码:

from socket import *
serverName = 'localhost'
serverPort = 12000
clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM)
message = raw_input('Input lowercase sentence:')
clientSocket.sendto(message,(serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print (modifiedMessage)
clientSocket.close()

我在运行客户端时为什么会出现这个错误呢?

Traceback (most recent call last):
  File "UDPClient.py", line 4, in <module>
    clientSocket = (socket.AF_INET, socket.SOCK_DGRAM)
AttributeError: type object 'socket' has no attribute 'AF_INET'

我在这个论坛上查了一下,发现有人遇到过类似的问题,但他们的问题是因为他们导入了自己的socket.py文件。我没有,我用的是标准的Python库……

另外,我还有个小问题……

为什么我不能在Windows 8上允许Python访问?现在它被阻止了,不知道为什么。我是这个电脑的管理员,也是唯一的账户,当我点击“更改设置”来允许程序通过防火墙时(这个选项没有灰显,所以证明我是管理员),什么都没有出现……请问有什么帮助吗?

1 个回答

12
clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM)

如果你打算像这样使用 AF_INET,你应该用 import socket 的方式导入,而不是用 from socket import *。否则,你可以直接这样做:

clientSocket = socket(AF_INET, SOCK_DGRAM)

撰写回答