目录
先睹为快:聊天软件对话
在学习编程语言的过程中,自己动手去编写代码是最有效的学习方式,比如自行编写计算器,日历,时钟,聊天工具等,因此,本文就为大家介绍:基于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人已购查看