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中用datetime包进行对时间的一些操作
Jun 23 Python
Python实现的文本对比报告生成工具示例
May 22 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
python搜索包的路径的实现方法
Jul 19 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
python多进程并行代码实例
Sep 30 Python
python中元组的用法整理
Jun 15 Python
python利用platform模块获取系统信息
Oct 09 Python
python实现一个简单RPC框架的示例
Oct 28 Python
Python基础之元类详解
Apr 29 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
PHP数组操作汇总 php数组的使用技巧
2011/07/17 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
jquery五角星评分插件示例分享
2014/02/21 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
vue-router单页面路由
2017/06/17 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
python通过索引遍历列表的方法
2015/05/04 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
启动一个线程是用run()还是start()
2016/12/25 面试题
考试保密承诺书
2014/08/30 职场文书
语文教师求职信范文
2015/03/20 职场文书
2015年招生工作总结
2015/05/04 职场文书
导游词之包公祠
2019/11/25 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL
Python四款GUI图形界面库介绍
2022/06/05 Python