目录
使用python Socket套接字来实现TCP客户端,TCP服务端。
在调试时注意:
1.代码复制过后可能缩进格式被改变,可能需要自己调整缩进格式。
2.在调试时,尽量使用网络调试助手进行调试,由于客户端和服务器代码只发或收一次就退出,可能导致没出现预定结果。
1 TCP
TCP的连接分为服务端和客户端。在python中无论是服务端还是客户端,首先需要做的就是导入socket包
import socket
其次所需要的就是实例化一个TCP的对象
需要注意的是,服务端和客户端这两步相同。
socket.socket(socket.AF_INET,socket.SOCK_STREAM)
1.1 TCP服务端
1.1.1 bind()绑定IP,端口号
如果是TCP服务端,就要自己固定一个IP和端口号以供其他客户端连接。所以需要绑定IP和端口号需要用到bind()函数。值得注意的是在函数中的参数应为元组形式的IP和端口号,IP为字符串,端口号为整形。
Tcp_Server_Socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
Tcp_Server_Socket.bind(("127.0.0.1",9090))
1.1.2 listen()设置监听
在服务端绑定过后就需要使用 listen() 设置监听。这里说设置监听,在我的理解就是设置监听队列并监听之前绑定的端口,如果有客户端连接 9090 端口时,自动将其加入到 listen 所创建的队列中。
(由于TCP的三次握手机制,队列中既存在已经完成三次握手的客户端,也存在只完成一次或两次握手的客户端,他们共同占用该队列,所以如果未完成三次握手的客户端迟迟不完成,同时有多个客户端也只进行一次或二次连接,会导致队列被占满,同时由于没有已完成三次握手的客户端,从而导致不能从中提取可以使用的客户端而不能提供服务)
既然存在等待队列,那么一定可以设置队列大小,其大小需要在 listen()的参数中填写。
Tcp_Server_Socket.listen(128)
1.1.3 accept()提取可用客户端
在队列设置好后如果有已完成三次握手的客户端,TCP服务器就应该可以跟它收发信息。
于是 ac