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实现从订阅源下载图片的方法
Mar 11 Python
python实现中文转换url编码的方法
Jun 14 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
对python numpy数组中冒号的使用方法详解
Apr 17 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
python版大富翁源代码分享
Nov 19 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
python实现文字版扫雷
Apr 24 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 Python
python实现将中文日期转换为数字日期
Jul 14 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 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
Symfony模板的快捷变量用法实例
2016/03/17 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
改变状态栏文字的js代码
2014/06/13 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
python多线程用法实例详解
2015/01/15 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
python字典的常用方法总结
2019/07/31 Python
python中如何使用insert函数
2020/01/09 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
皮肤科医师岗位职责
2013/12/04 职场文书
物流业务员岗位职责
2014/02/08 职场文书
日语系毕业求职信
2014/07/27 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
网络妈妈观后感
2015/06/08 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
MySQL触发器的使用
2021/05/24 MySQL
详解Redis集群搭建的三种方式
2021/05/31 Redis
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
mysql联合索引的使用规则
2021/06/23 MySQL
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS