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使用cookie库操保存cookie详解
Mar 03 Python
Python subprocess模块学习总结
Mar 13 Python
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
深入理解python中的闭包和装饰器
Jun 12 Python
Python编程argparse入门浅析
Feb 07 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
Python3进制之间的转换代码实例
Aug 24 Python
详解python中的模块及包导入
Aug 30 Python
python修改FTP服务器上的文件名
Sep 11 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
python自动化测试三部曲之unittest框架的实现
Oct 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
php 中文处理函数集合
2008/08/27 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
Nuxt配合Node在实际生产中的应用详解
2018/08/07 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python按照多个条件排序的方法
2019/02/08 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
python 利用toapi库自动生成api
2020/10/19 Python
Python爬取梨视频的示例
2021/01/29 Python
小学庆六一活动总结
2014/08/28 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
群众路线个人整改方案
2014/10/25 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
放假通知
2015/04/14 职场文书
Oracle笔记
2021/04/05 Oracle
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
MySQL新手入门进阶语句汇总
2022/09/23 MySQL