Socket没有属性AF_INET?
我正在做一本教科书上的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)