我正在阅读一本名为“暴力Python”的书,其中有一个脚本可以使用套接字模块来提取FTP数据
>>> import socket
>>> socket.setdefaulttimeout(2)
>>> s = socket.socket()
>>> s.connect(("192.168.95.148",21))
>>> ans = s.recv(1024)
>>> print ans有人能解释一下s = socket.socket()部分吗?
s.connect(("192.168.95.148",21))就像在说:
socket.socket.(connect(("192.168.95.148",21)))
只是对s变量感到困惑,以及为什么需要说明两次?我希望这是有意义的,我相信这不仅仅适用于这个方法。
发布于 2014-08-13 11:51:06
socket()是库socket中的一个函数,所以当您需要使用socket()函数时,您可以通过socket.socket()引用它。
或者,您可以这样做,from socket import socket和do s = socket()
从文档,
使用给定的地址系列、套接字类型和协议号创建新套接字。地址系列应该是AF_INET (默认)、AF_INET6或AF_UNIX。套接字类型应该是SOCK_STREAM (默认)、SOCK_DGRAM或其他SOCK_常量之一。协议号通常为零,在这种情况下可以省略。
当您执行s.connect(("192.168.95.148",21))时,它等同于socket.socket().connect(("192.168.95.148",21))。
在您的示例中,将socket.socket()分配给s是有意义的,因为您多次使用它。
>>> s.connect(("192.168.95.148",21))
>>> ans = s.recv(1024)
>>> print ans肯定比,
>>> socket.socket().connect(("192.168.95.148",21))
>>> ans = socket.socket().recv(1024)
>>> print ans由于您还在学习编程,并且在这个特定的上下文中,您可能需要查看干的原则。我还建议您通过PEP8标准来获得良好的编码实践。
更进一步,如果您对函数或语句的作用有疑问,可以使用help函数。
help(socket)摘录
描述了本模块提供的套接字操作及相关功能。在Unix上,它支持IP (Internet Protocol)和Unix域套接字。在其他系统上,它只支持IP。特定于套接字的函数可作为套接字对象的方法使用。 函数: socket() --创建一个新的套接字对象套接字对() --创建一对新的套接字对象* from IP () --从打开的文件描述符* gethostname()创建一个套接字对象--返回当前主机名gethostbyname() --将主机名映射到其IP编号gethostbyaddr() --将一个IP号或主机名映射到DNS info getservbyname() --将服务名称和协议名映射到端口号getprotobyname() --将协议名(例如‘)映射到ntohs(),ntohl() --将16位,32位int从网络转换为主机字节顺序hton(),htonl() --转换16,32位int从主机到网络字节顺序inet_aton() --将IP附加字符串(123.45.67.89)转换为32位打包格式的inet_ntoa() --将32位压缩格式IP转换为字符串(123.45.67.89) ssl() -安全套接字层支持(只有在配置好的情况下可用) socket.getdefaulttimeout() -获取默认超时值socket.setdefaulttimeout() -设置默认超时值create_connection() -连接到地址,具有可选超时和可选源地址。
help(socket.socket())摘录
->套接字对象\\打开给定类型的套接字。“家族”参数指定了“\”地址族;它默认为“AF_INET”。类型参数指定这是流(SOCK_STREAM,这是默认的)\\还是数据报(SOCK_DGRAM)套接字。协议参数默认为0,并指定默认协议。接受关键字参数。套接字对象表示网络连接的一个端点。
总之,我们知道socket()是一个创建新套接字对象的函数,这个函数可以在socket库中使用。
发布于 2014-08-13 11:59:14
来自Python主干socket.py文件:
功能: socket() --创建一个新的套接字对象
https://stackoverflow.com/questions/25285327
复制相似问题