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中bytes和string之间的互相转换
Feb 09 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
python批量实现Word文件转换为PDF文件
Mar 15 Python
python3模块smtplib实现发送邮件功能
May 22 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
Python中bisect的用法及示例详解
Jul 20 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
Flask中jinja2的继承实现方法及实例
Mar 03 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通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
浅析PHP开发规范
2018/02/05 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
Python的类实例属性访问规则探讨
2015/01/30 Python
初步解析Python中的yield函数的用法
2015/04/03 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
python删除列表内容
2015/08/04 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
python groupby 函数 as_index详解
2019/12/16 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
泰国网上购物:Shopee泰国
2018/09/14 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
远程调用的原理
2014/07/05 面试题
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
旷课检讨书2000字
2014/01/14 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
护士医德考评自我评价
2015/03/03 职场文书
经费申请报告
2015/05/15 职场文书
美丽人生观后感
2015/06/03 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL