//
Python使用socket(上)
//
socket套接字介于tcp/ip协议的应用层和传输层之间,所以他可以控制着应用于tcp之间的通讯
以搭建一个tcp服务器为例讲解一下socket套接字
1.首先我们需要先建立一个套接字对象(默认导入了socket模块)
s = socket.socket(socket.AF_INET,socket.SOCK_STERAM)
关于socket函数有两个参数第一个参数是协议族,第二个是协议
协议族有两种,一种是AF_INET用于internet进程间的通信,另一种是AF_UNIX用于同一台机器间的通信(我们知道进程间资源是不能共享的,所以可以通过socket实现进程间资源的共享)
关于协议socket.SOCK_STREAM代表着tcp协议
socket.SOCK_DGRAM代表着udp协议
2.使用bind()方法为套接字绑定IP以及端口号
s.bind((‘127.0.0.1’,8000))
注意绑定IP和端口时IP和端口要在一起组成一个元组作为参数传入
3.使用listen()方法是套接字监听变成可被动链接
s.listen(10)
传入一个参数作为最大挂起数
4.使用accept()方法建立客户端的连接(tcp面向连接)
conn,addr = web.accept()
conn是新的套接字用于与建立连接的客户端发送以及接收消息
5.使用recv方法以及send方法接收发送消息
data = conn.recv(1024)#一次最多接收1024个byte数据
conn.send(‘hello’)#发送hello
综上我们可以得出结论如下:
建立一个tcp服务器需要先创建tcp套接字,然后在为套接字绑定ip以及端口号并设置为监听状态,最后再与客户端建立连接进行收发消息
ps:扩展(如果刚学socket可以跳过)
1.我们平常使用的套接字只是tcp/udp套接字,而套接字并不只有这两种,其实还有原始套接字,直接跳过tcp协议,自己组ip包,我们知道tcp协议以及udp协议有检查功能,但是用原始套接字就可以跳过,也就是说我们可以通过原始套接字伪造ip地址
2.关于tcp协议的四次挥手
tcp是建立在友好的连接之上的所以需要进行4次挥手,为什么是4次挥手这里我就不再做详细介绍了,这里我要提醒的是服务器一定不要先断开连接,因为先断开的一端因为最后一次握手的原因需要保留资源2MSL,而在这个期间端口会被占用,也就是说不能再去接收新的连接,造成阻塞
领取专属 10元无门槛券
私享最新 技术干货