Python实战_聊天软件开发与socket编程知识大汇总(附代码)00_28

先睹为快:聊天软件对话

在学习编程语言的过程中,自己动手去编写代码是最有效的学习方式,比如自行编写计算器,日历,时钟,聊天工具等,因此,本文就为大家介绍:基于python的聊天程序实战开发!

话不多说,先睹为快:

重播 播放 00:00 / 00:00 正在直播 00:00 进入全屏 点击按住可拖动视频

下面本文将详细介绍上述程序的具体代码细节,附带TCP/IP协议的socket编程相关知识!

聊天程序设计与代码详解

本文介绍的聊天程序实现的是客户端与服务器之间的直接通信,但可以作为读者了解并深入学习socket编程的入门经典程序,下面先介绍该程序的socket通信程序设计步骤与代码!

★ 服务器程序设计步骤

1、创建socket套接字 2、绑定socket到指定IP和端口 3、开始监听来自客户端的连接 4、等待客户端连接请求 5、连接成功则读取套接字中的信息 6、服务器向客户端发送信息 7、关闭socket套接字

★ 服务器代码与注释

server代码

★服务器代码详解

socket():创建socket实例localhost:服务器的IP地址,因客户端和服务器都在本机,故采用本机环路IP地址(localhost=127.0.0.1)bind():绑定IP地址与端口,参数要求元组形式 -(服务器IP地址字符串,端口号)listen(1):允许一个客户端连接,可设为naccept():返回服务器与当前客户端之间的新套接字(clientconn)和当前客户端的IP地址(clientaddr)。新套接字专用于该客户端与服务器通信,每个客户端连接服务器都会有各自的新套接字。若无客户端请求连接,则服务器一直等待。recv():接收新套接字中的数据,解码方式为utf-8。send():服务器向客户端回传信息close():关闭套接字

★ 客户端程序设计步骤

1、创建socket套接字 2、连接远程主机(服务器) 3、连接成功则可发送信息 4、读取服务器回传的信息 5、关闭socket套接字

★ 客户端代码与注释

client代码

★客户端代码详解

connect():用于连接服务器,参数要求元组形式 -(服务器IP地址字符串,端口号)127.0.0.1:服务器的IP地址,因客户端和服务器都在本机,故采用本机环路IP地址(localhost=127.0.0.1)send()/recv()/close():同server代码详解

附录:Python网络编程知识简化易记版

一、、TCP三次握手连接图解

白话TCP三次握手连接过程:

客户端:我要发起连接了,服务器,你准备好了吗? 服务器:我准备好了,客户端,你准备好了吗? 客户端:我也准备好了,服务器,下面我开始发送数据了!

其实TCP的三次握手连接就跟人与人距离较远时喊话通信一样!

TCP三次握手

ACK:Acknowledge,确认序号有效 SEQ:Sequence Number,序号,32位,标记从客户端发送到服务器的数据包序号 SYN:Synchronous,建立一个新连接

三次握手重要之处:

1. 发送方确认对方是否收到自身发送的数据是通过“ACK”号确定的!

2. 发送方总会记录自己发出的数据包序号 SEQ,对方收到该数据包后回传确认数据,发送方检查对方回传数据中的“ACK”号是否等于SEQ + 1,若成立,则说明对方正确收到了自己的数据包!

二、TCP四次握手断开图解

白话TCP四次握手断开过程:

客户端:数据发送完成,服务器,我想断开连接了 服务器:好的,客户端,请稍等一会,我来做准备 片刻时间之后…… 服务器:客户端,我已经准备好了,你可以断开连接了 客户端:好咧,感谢配合

TCP四次握手断开

ACK:Acknowledge,确认序号有效 SEQ:Sequence Number,序号,32位,标记从客户端发送到服务器的数据包序号 FIN :Finish,断开一个连接

三、Python网络编程模块汇总

Python网络编程模块汇总

四、socket模块函数汇总

socket模块函数汇总

总结

本文中的聊天程序其实无法实现多个客户端之间的交流,与实际意义上的聊天功能尚有区别!

因此,在下篇文章中,将为大家介绍多个客户端之间的聊天程序开发,来模拟接近真实的聊天软件功能!

专栏Python入门基础课程作者:茵苗教育19.9币163人已购查看