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 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
初步理解Python进程的信号通讯
Apr 09 Python
深入浅析python定时杀进程
Jun 06 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
python框架flask表单实现详解
Nov 04 Python
Python面向对象之多态原理与用法案例分析
Dec 30 Python
基于python实现语音录入识别代码实例
Jan 17 Python
python通过cython加密代码
Dec 11 Python
Python如何导出导入所有依赖包详解
Jun 08 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 25 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操作数组相关函数
2011/02/03 PHP
php记录日志的实现代码
2011/08/08 PHP
PHP加密解密函数详解
2015/10/28 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
Java如何格式化日期
2012/08/07 面试题
党支部组织生活会整改方案
2014/09/30 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
一文带你探究MySQL中的NULL
2021/11/11 MySQL
Python实现双向链表
2022/05/25 Python