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 相关文章推荐
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
python中ASCII码和字符的转换方法
Jul 09 Python
python实现函数极小值
Jul 10 Python
python原类、类的创建过程与方法详解
Jul 19 Python
Python一键安装全部依赖包的方法
Aug 12 Python
python 魔法函数实例及解析
Sep 25 Python
python如何处理程序无法打开
Jun 16 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Pytest allure 命令行参数的使用
Apr 18 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输出Excel文件类
2010/02/08 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
Javascript 二维数组
2009/11/26 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
Python简单实现控制电脑的方法
2018/01/22 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
Pycharm更换python解释器的方法
2018/10/29 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
如何在pycharm中安装第三方包
2020/10/27 Python
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
师范生求职信
2014/06/14 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
勤俭节约主题班会
2015/08/13 职场文书
django上传文件的三种方式
2021/04/29 Python
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS