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参数和作用域的使用
Nov 01 Python
实例讲解Python编程中@property装饰器的用法
Jun 20 Python
SQLite3中文编码 Python的实现
Jan 11 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
python 利用栈和队列模拟递归的过程
May 29 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
python mysql断开重连的实现方法
Jul 26 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
Django model.py表单设置默认值允许为空的操作
May 19 Python
matplotlib教程——强大的python作图工具库
Oct 15 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替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
Python单例模式的两种实现方法
2017/08/14 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
Python中Selenium模块的使用详解
2020/10/09 Python
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
ktv收银员岗位职责
2013/12/16 职场文书
办护照工作证明范本
2014/01/14 职场文书
模范教师事迹材料
2014/02/10 职场文书
《悯农》教学反思
2014/04/28 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
公司前台接待岗位职责
2015/04/03 职场文书
房产电话营销开场白
2015/05/29 职场文书
中秋节晚会开场白
2015/05/29 职场文书
收入证明申请书
2015/06/12 职场文书
教师节随笔
2015/08/15 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书