Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例


Posted in Python onAugust 31, 2017

本文实例讲述了Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能。分享给大家供大家参考,具体如下:

【吐槽】

网上的代码害死人,看着都写的言之凿凿,可运行就是有问题。
有些爱好代码、喜欢收藏代码的朋友,看到别人的代码就粘贴复制过来。可是起码你也试试运行看啊大哥

【正文】

昨日修改运行了UDP协议的C/S聊天程序,可是TCP协议的怎么都不行。各种试,各种坑。

做了下面几个修改后,终于可以了:

1、对发送、接收的信息,分别进行编码和解码
2、客户端的第10行bind改为connect这真是个大坑!!

(本文基于windows 7 + python 3.4)

完整代码如下(人头担保,本人亲测正常!):

服务器端:

# tcp_server.py
'''服务器'''
from socket import *
from time import ctime
HOST = '' #主机地址
PORT = 23345 #端口号
BUFSIZ = 2048 #缓存区大小,单位是字节,这里设定了2K的缓冲区
ADDR = (HOST, PORT) #链接地址
tcpSerSock = socket(AF_INET, SOCK_STREAM) #创建一个TCP套接字
tcpSerSock.bind(ADDR) #绑定地址
tcpSerSock.listen(5) #最大连接数为5
while True: #无限循环
  print('尝试连接客户端。。。')
  tcpCliSock, addr = tcpSerSock.accept() #等待接受连接
  print('链接成功,客户端地址为:', addr)
  while True:
    data = tcpCliSock.recv(BUFSIZ) #接收数据,BUFSIZ是缓存区大小
    if not data: break #如果data为空,则跳出循环
    print(data.decode())
    msg = '{} 服务器已接收 [自动回复]'.format(ctime())
    tcpCliSock.send(msg.encode())
  tcpCliSock.close() #关闭连接
tcpSerSock.close() #关闭服务器

客户端:

# tcp_client.py
'''客户端'''
from socket import *
from time import ctime
HOST = 'localhost' #主机地址
PORT = 23345 #端口号
BUFSIZ = 2048 #缓存区大小,单位是字节,这里设定了2K的缓冲区
ADDR = (HOST, PORT) #链接地址
tcpCliSock = socket(AF_INET, SOCK_STREAM) #创建一个TCP套接字
#tcpCliSock.bind(ADDR) #绑定地址
tcpCliSock.connect(ADDR) #绑定地址
while True:
  msg = input('请输入:') #输入数据
  if not msg: break #如果 msg 为空,则跳出循环
  tcpCliSock.send(msg.encode())
  data = tcpCliSock.recv(BUFSIZ) #接收数据,BUFSIZ是缓存区大小
  if not data: break #如果data为空,则跳出循环
  print(data.decode())

【运行截图】

实验方法:先运行服务器端,然后运行客户端

Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例

然后就可以在客户端自由的与服务器端聊天了:

Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
玩转python爬虫之正则表达式
Feb 17 Python
Python三级目录展示的实现方法
Sep 28 Python
Python 绘图和可视化详细介绍
Feb 11 Python
详解python分布式进程
Oct 08 Python
使用python判断你是青少年还是老年人
Nov 29 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
python实现nao机器人身体躯干和腿部动作操作
Apr 29 Python
python SVD压缩图像的实现代码
Nov 05 Python
python绘制无向图度分布曲线示例
Nov 22 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
Python库安装速度过慢解决方案
Jul 14 Python
Python创建自己的加密货币的示例
Mar 01 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 #Python
python requests 使用快速入门
Aug 31 #Python
如何高效使用Python字典的方法详解
Aug 31 #Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 #Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 #Python
go和python变量赋值遇到的一个问题
Aug 31 #Python
理解Python中的绝对路径和相对路径
Aug 30 #Python
You might like
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
php-app开发接口加密详解
2018/04/18 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
python判断字符串是否包含子字符串的方法
2015/03/24 Python
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
python pygame实现2048游戏
2018/11/20 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
项目管理计划书
2014/01/09 职场文书
职工运动会邀请函
2014/01/19 职场文书
四个太阳教学反思
2014/02/01 职场文书
社区国庆节活动方案
2014/02/05 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
商铺消防安全责任书
2014/07/29 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript
Java常用函数式接口总结
2021/06/29 Java/Android