Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例_易旧朽*的博客-程序员宅基地_python socket如何获取tcp等待回复的时间

技术标签: python  linux  python3教程  

这篇文章主要介绍了Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能,结合实例形式分析了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() #关闭连接

客户端:

# 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学习基地,看前辈们是如何学习的!从基础的python脚本、爬虫、django、数据挖掘等编程技术,还有整理零基础到项目实战的资料,送给每一位爱学习python的小伙伴!每天都有老前辈定时讲解Python技术,分享一些学习的方法和需要留意的小细节,点击加入我们的 python学习者聚集地

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/haoxun06/article/details/104401458

智能推荐

华为手机广告“来自iPhone客户端”_西雅图IT圈的博客-程序员宅基地

西雅图IT圈:seattleit【今日作者】PowerBall选号机身体和灵魂总有一个要走在买PowerBall的路上女神Gal Gadot近日担任华为在美国的品牌大使,...

炬芯ATS2825爆发力惊人 创新Muvo 2c音效震撼_孟迎霞的博客-程序员宅基地

智能家居的如日中天为蓝牙找到了一席之地,原本沉寂多年的蓝牙技术,终于在智能交织的物联网时代再次崛起,作为无线协议的中坚技术,蓝牙标准被推向了爆发的风口。蓝牙市场的热度上涨,迅速催涨蓝牙终端产品层出不穷,包括蓝牙音箱、蓝牙耳机、蓝牙车载、智能蓝牙灯等产品琳琅满目,有关这类目的产品评测也逐渐占据各大媒体版面。 网上一位网友在对创新Muvo2c这款迷你型蓝牙音箱进行评测时,给予了较高评价,如...

centos7 编译安装lnmp环境(PHP篇二)_懒猫一小只的博客-程序员宅基地

一、安装PHP1、先安装如下依赖包yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl cu

3dmax:3dmax三维动画之材质/渲染设置的简介、经典案例之详细攻略_听雪闻歌的博客-程序员宅基地

3dmax:3dmax三维动画之材质/渲染设置的简介、经典案例之详细攻略目录3dmax三维动画之材质/渲染设置的简介、经典案例3dmax三维动画之材质/渲染设置的简介3dmax三维动画之材质/渲染设置的经典案例3dmax三维动画之材质/渲染设置的简介、经典案例3dmax三维动画之材质/渲染设置的简介3dmax三维动画之材质/渲染设置的经典案例...

使用ADO智能指针_ConnectionPtr,_CommandPtr及_RecordsetPtr_木鱼-的博客-程序员宅基地__commandptr

使用C++(MFC)操作数据库,首选就是ADO。ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。在MFC要使用ADO(COM)首先要引用COM地址,编译器才能够实现。从网上的很多资料都介绍,将EOF重命名,防止和其他冲突,那偶们也这样做反正也不会有坏处。格式如下:#include #import "c:\program

随便推点

大数据 标准库 应用库_如何为您的应用选择合适的数据库_cxu0262的博客-程序员宅基地

大数据 标准库 应用库 选择“正确的”数据库通常对于应用程序的成功至关重要。 与考虑供应商的建议或因为已经碰巧已经拥有数据库而使用数据库相比,考虑数据存储的基本目的和需求很有用。 在选择数据库时,这些是最重要的问题: 您希望在应用程序成熟时存储多少数据? 您希望在高峰负载下同时处理多少个用户? 您的应用程序需要什么可用性,可伸缩性,延迟,吞吐量和数据一致性? 您的数据库架构...

创建Hull Shader_会头痛的可达鸭的博客-程序员宅基地_hull shader

一、前言 Hull Shader是舞台工作三个阶段的第一个阶段,可以实现tessellation, Hull Shader transforms将一组输入控制点 转化为 输出控制点,输入、输出点的数量根据转换内容和数量而变化二、设计Hull shader三、通过ID3D11Device::CreateHullShader创建hull-shader对象 HRESULT CreateHullShader( ...

基本算法_荒海觅的博客-程序员宅基地_share 算法

英文原址:http://www.risc.jku.at/people/ckoutsch/stuff/e_algorithms.html     奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多

Zabbix常用item汇总及说明_宇翔XGT的博客-程序员宅基地

Zabbix常用item汇总及说明2018.5Zabbix中内置了很多监控参数(Key_),可以获取监控对象中的系统、CPU、网络、内存、文件系统等信息。下面就详细介绍一下这些监控参数的意义。1. 测试获取监控参数内容的方法在Zabbix Server上使用zabbix_get命令可以从监控对象获取监控参数的具体内容。zabbix_get命令的具体使用方法如下:zabbix_get  -s  目标...

什么是八大智能?_人机与认知实验室的博客-程序员宅基地

主要有语言智能、数学逻辑智能、空间智能、身体运动智能、音乐智能、人际智能、自我认知智能、自然认知智能。    八十年代,美国著名发展心理学家、哈佛大学教授霍华德·加德纳博士提出多元智能理论,二十多年来该理论已经广泛应用于欧美国家和亚洲许多国家的幼儿教育上,并且获得了极大的成功。霍华德·加德纳博士指出,人类的智能是多元化而非单一的,主要是由语言智能、数学逻辑智能、空间智能、身体运动智能、音乐智能、人

数字图像处理--02数字图像基础__苏沐的博客-程序员宅基地

数字图像基础图像取样与量化图像的质量层次:对比度像素间的基本关系(考)图像取样与量化取样:图像空间坐标的离散(空间坐标(x,y)的数字化)量化:图像函数值(灰度值、幅度值)的离散、量化编码采样间隔(减小)决定了图像的空间分辨率(增加)采样间隔越大,所得图像像素数越少,空间分辨率低,质量差,严重时出现马赛克效应;采样间隔越小,所得图像像素数越多,空间分辨率高,图像质量好,但数据量大。量化编码长度(增加)决定灰度分辨率(增加)显示分辨率越大越清楚图像的质量层次:1.灰度级:像素的取值范围为

推荐文章

热门文章

相关标签