先睹为快:聊天软件对话
在学习编程语言的过程中,自己动手去编写代码是最有效的学习方式,比如自行编写计算器,日历,时钟,聊天工具等,因此,本文就为大家介绍:基于python的聊天程序实战开发!
话不多说,先睹为快:
00:28下面本文将详细介绍上述程序的具体代码细节,附带TCP/IP协议的socket编程相关知识!
聊天程序设计与代码详解
本文介绍的聊天程序实现的是客户端与服务器之间的直接通信,但可以作为读者了解并深入学习socket编程的入门经典程序,下面先介绍该程序的socket通信程序设计步骤与代码!
★服务器程序设计步骤
创建socket套接字绑定socket到指定IP和端口开始监听来自客户端的连接等待客户端连接请求连接成功则读取套接字中的信息服务器向客户端发送信息关闭socket套接字★服务器代码与注释
服务器代码★服务器代码详解
socket():创建socket实例
localhost:服务器的IP地址,因客户端和服务器都在本机,故采用本机环路IP地址(localhost=.0.0.1)
bind():绑定IP地址与端口,参数要求元组形式-(服务器IP地址字符串,端口号)
listen(1):允许一个客户端连接,可设为n
accept():返回服务器与当前客户端之间的新套接字(clientconn)和当前客户端的IP地址(clientaddr)。新套接字专用于该客户端与服务器通信,每个客户端连接服务器都会有各自的新套接字。若无客户端请求连接,则服务器一直等待。
recv():接收新套接字中的数据,解码方式为utf-8。
send():服务器向客户端回传信息
close():关闭套接字
★客户端程序设计步骤
创建socket套接字连接远程主机(服务器)连接成功则可发送信息读取服务器回传的信息关闭socket套接字★客户端代码与注释
客户端代码★客户端代码详解
connect():用于连接服务器,参数要求元组形式-(服务器IP地址字符串,端口号)
.0.0.1:服务器的IP地址,因客户端和服务器都在本机,故采用本机环路IP地址(localhost=.0.0.1)
send()/recv()/close():同server代码详解
附录:Python网络编程知识简化易记版
一、、TCP三次握手连接图解
白话TCP三次握手连接过程:客户端:我要发起连接了,服务器,你准备好了吗?服务器:我准备好了,客户端,你准备好了吗?客户端:我也准备好了,服务器,下面我开始发送数据了!
其实TCP的三次握手连接就跟人与人距离较远时喊话通信一样!
TCP三次握手连接ACK:Acknowledge,确认序号有效SEQ:SequenceNumber,序号,32位,标记从客户端发送到服务器的数据包序号SYN:Synchronous,建立一个新连接三次握手重要之处:发送方确认对方是否收到自身发送的数据是通过“ACK”号确定的!发送方总会记录自己发出的数据包序号SEQ,对方收到该数据包后回传确认数据,发送方检查对方回传数据中的“ACK”号是否等于SEQ+1,若成立,则说明对方正确收到了自己的数据包!
二、TCP四次握手断开图解
白话TCP四次握手断开过程:客户端:数据发送完成,服务器,我想断开连接了服务器:好的,客户端,请稍等一会,我来做准备片刻时间之后……服务器:客户端,我已经准备好了,你可以断开连接了客户端:好咧,感谢配合
TCP四次握手断开ACK:Acknowledge,确认序号有效SEQ:SequenceNumber,序号,32位,标记从客户端发送到服务器的数据包序号FIN:Finish,断开一个连接三、Python网络编程模块汇总
Python网络编程模块汇总四、Socket模块函数汇总
Socket模块函数汇总总结
本文中的聊天程序其实无法实现多个客户端之间的交流,与实际意义上的聊天功能尚有区别!
因此,在下篇文章中,将为大家介绍多个客户端之间的聊天程序开发,来模拟接近真实的聊天软件功能!
谢谢