前言 :我所写的一切只是为了能够看懂脚本,所以我会在后续有补充,现在所写的只是为了完成脚本 。
1.网络主机的使用
gethostname()返回运行程序所在的计算机的主机名:
>>> import socket
>>> socket.gethostname()
'史思博'
gethostbyname(name) 尝试将给定的主机名解释为一个IP地址。首先将检查当前计算机是否能够解释。如果不能,一个解释请求将发送给一个远程的DNS服务器(远程的DNS服务器 还可能将解释请求转发给另一个DNS服务器,直到该请求可以被处理)。gethostbyname函数返回这个IP地址或在查找失败后引发一个异常。
>>> socket.gethostbyname('baidu.com')
'111.13.101.208'
socket 也定义了一些变量来代表保留的IP地址。INADDR_ANY和INADDR_BROADCAST是被保留的IP地址分别代表任意IP地址和广播地 址;INADDR_LOOPBACK代表loopback设备,总是地址127.0.0.1。这些变量是32位字节数字形式的。
2.使用socket进行通信
socket 模块中的socket(family,type[,proto])函数创建一个新的socket对象。family的取值通常是AF_INET。type 的取值通常是SOCK_STREAM(用于定向的连接,可靠的TCP连接)或SOCK_DGRAM(用于UDP):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect(('IP',Port)),如果连接被信号中断,则该方法等待直到连接完成,或者如果信号处理程序没有引发异常并且套接字正在阻塞或者已经阻塞,则在超时时引入socket.timeout超时。对于非阻塞套接字,如果连接被信号中断(或由信号处理程序引发的异常),则该方法引发InterruptedError异常。
>>> s.connect(('111.13.101.208',80))
在客户端键入以下代码来接收信息:
>>> s.recv(1024)
函 数send(string[,flags])发送给定的字符串到远程socket。sendto(string[,flags],address)发送给 定的字符串到一个特定的地址。通常,send方法用于可靠连接的socket,sendto方法用于不可靠连接的socket,但是如果你在一个 UDP socket上调用connect来使它与一个特定的目标建立联系,那么这时你也可以使用send方法来代替sendto。
>>> s.send(b'hello')
5
python3中socket模块只能发送字节型数据
close()取消连接,这个就不赘述了。
网友评论