套接字没有属性AF_INET?

时间:2014-04-03 16:29:27

标签: python sockets firewall udpclient

我正在尝试从我的一本教科书中进行套接字编程分配.. UDP连接..

UDPServer.py

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)

UDPClient.py

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,它目前因某些原因被阻止,我是此计算机上的管理员和唯一帐户,当我点击允许程序通过防火墙更改设置时(这是没有灰色,所以它证明我是管理员),什么都没有出现..请帮忙吗?

2 个答案:

答案 0 :(得分:9)

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

如果你打算像这样打电话给AF_INET,你应该import socket而不是from socket import *否则就这样做

clientSocket = socket(AF_INET, SOCK_DGRAM)

答案 1 :(得分:-1)

将导入更改为

...
$userip = $_SERVER['REMOTE_ADDR']."-".$user;
$msg = $userip."-".$message;

$fp=fsockopen($host,$port,$errstr,$errno,300)
fputs($fp,$msg);
fclose($fp);
...

那么,如果你只做

import socket

就像 d_rez90 建议的那样,你会得到类似的东西

<块引用>

类型错误:“模块”对象不可调用

由于socket是一个模块,包含类socket,你实际上需要做的

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