【问题标题】:Socket has no attribute AF_INET?套接字没有属性AF_INET?
【发布时间】:2014-05-15 15:15:51
【问题描述】:

我正在尝试根据我的一本教科书进行套接字编程作业.. 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,它目前由于某种原因被阻止,我是这台计算机上的管理员和唯一帐户,当我单击“允许程序通过防火墙”中的“更改设置”时(未显示为灰色)出来所以证明我是管理员),什么都没有出现。请帮忙?

【问题讨论】:

  • 检查您如何导入socket 以及您是如何访问它的。

标签: python sockets firewall udpclient


【解决方案1】:
clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM)

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

clientSocket = socket(AF_INET, SOCK_DGRAM)

【讨论】:

    【解决方案2】:

    将导入改为

    import socket
    

    那么,如果你只是这样做

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

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

    TypeError: 'module' 对象不可调用

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多