python 网络编程
一般我们都是使用的socket()函数,它又叫做“套接字”;计算机的进程要想实现通信,必须要通过socket向网络发送请求,或者对网络请求做出回答
如何用socket()创建套接字? 语法如下:
socket.socket([family[, type[, proto]]])
其中有3个参数,分别是 family 、type 、proto
family 套接字家族可以使AF_UNIX或者AF_INET
type 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM
或SOCK_DGRAM
proto 一般不填默认为0.
接下来讲一下,socket对象的方法,一共是3类:服务端套接字、客户端套接字、公共套接字
服务端:
s.bind() | 绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址。 |
s.listen() | 开始TCP监听。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为1,大部分应用程序设为5就可以了。 |
s.accept() | 被动接受TCP客户端连接,(阻塞式)等待连接的到来 |
客户端:
s.connect() | 主动初始化TCP服务器连接。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。 |
公共:
s.recv() | 接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其他信息,通常可以忽略。 |
s.send() | 发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小。 |
s.sendall() |
完整发送TCP数据,完整发送TCP数据。将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。
|