我正在尝试从我的一本教科书中进行套接字编程分配.. 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,它目前因某些原因被阻止,我是此计算机上的管理员和唯一帐户,当我点击允许程序通过防火墙更改设置时(这是没有灰色,所以它证明我是管理员),什么都没有出现..请帮忙吗?
答案 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)