使用udp发送/接收数据步骤:
1. 创建客户端套接字
2. 发送/接收数据
3. 关闭套接字
编码的转换
str --> bytes: encode() 编码
bytes --> str: decode() 编码
UDP绑定端口号
1. 创建socket套接字
2. 绑定端口号
3. 接收/发送数据
4. 关闭套接字
注意点: 绑定端口要在发送数据之前进行绑定
TCP总结:
TCP 客户端的创建流程:
1. 创建TCP的socket套接字
2. 连接服务器
3. 发送数据给服务器端
4. 接收服务器端发送来的消息
5. 关闭套接字
TCP服务器端的创建流程
1. 创建TCP服务端的socket
2. bing绑定ip地址和端口号
3. listen 使套接字变为被动套接字
4. accept 取出一个客户端连接, 用于服务
5. recv/send 接收和发送消息
6. 关闭套接字
注意点:
tcp服务器一般都需要绑定,否则客户端找不到服务器
tcp客户端一般不绑定,因为是主动链接服务器,所以只要确定好服务器的ip, port等信息就好
本地客户端可以随机tcp服务器中通过listen可以将socket创建出来的主动套接字变为被动的,这是做tcp服务器时必须要做的
当客户端需要链接服务器时,就需要使用connect进行链接, udp是不需要链接的而是直接发送,但是tcp必须先链接,只有链接成功
才能通信
当一个tcp客户端连接服务器时,服务器端会有1个新的套接字,这个套接字用来标记这个客户端,单独为这个客户端服务
listen后的套接字是被动套接字,用来接收新的客户端的连接请求的,而accept返回的新套接字是标识这个新客户端的
关闭listen后的套接字意味着被动套接字关闭了,会导致新的客户端不能够链接服务器,但是前已经链接成功的客户端正常通信。
关闭accept返回的套接字意味着这个客户端已经服务完毕.
当客户端的套接字调用close后,服务器端会recv解阻塞,并且返回的长度为0,因此服务器可以通过返回数据的长度来区别客户端
是否已经下线;同理当服务器断开tcp连接的时候客户端同样也会收到0字节数据。