Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
作者:罗兵 发布时间:2023-07-18 20:11:01
标签: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() #关闭连接
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程序设计有所帮助。
来源:http://www.cnblogs.com/hhh5460/p/4249326.html
0
投稿
猜你喜欢
- 前言 在网上爬取的小视频(.ts格式)打不开怎么搞?使用IDM下载有时候还会出现数据受法律保护,IDM无法下载该内容,如何解决?这篇博客就
- 提示:本文多图,请手机端注意流量。前言利用python做图片识别,识别提取图片中的文字会有很多方法,但是想要简单一点怎么办,那就可以使用te
- 1.背景最近使用Pytest中的fixture和conftest时,遇到需要在conftest中的setup和teardown方法里传递参数
- 一、构建示例数据import pandas as pdimport numpy as npdata = {"ID":[2
- request获取post请求中的json数据def hello(request): data = json.loads(request.b
- php redis断线重连,pconnect连接失败问题介绍在swoole ,workerman等cli长连接模式下,遇到Redis异常断开
- int 数字类型class int(object): """ int(x=0) -&g
- 代码如下:<% '功能:取得文件扩展名 Function getFileExt(sFileNam
- 以前用Ubuntu的时候感觉很简单的事到ContOS上却变得很头痛,在执行以下命令安装python-pip居然什么也没执行。yum inst
- 这是一个由加油站油罐传感器测量的油罐高度数据和出油体积,根据体积和高度的倒数,用截面积来描述油罐形状,求出拟合曲线,再用标准数据,求积分来验
- 会用到的功能的简单介绍1、from bs4 import BeautifulSoup#导入库2、请求头herdersheaders={
- 去空格及特殊符号s.strip().lstrip().rstrip(',')Python strip() 方法用于移除字符串
- #region 读写xml文件的2个小函数,2005 4 2 by hyc public void 
- 今天偶尔在知乎上看到某大佬用Python写的ATM系统案例,然后观摩了下他的实现思路和源码,感觉受益颇多,于是就根据自己的思路和目前掌握的P
- 一 前言温习python 多进程语法的时候,对 join的理解不是很透彻,本文通过代码实践来加深对 join()的认识。multiproce
- 本文实例为大家分享了Python实现井字棋小游戏的具体代码,供大家参考,具体内容如下import osdef print_board(boa
- 使用django实现注册登录的话,注册登录都有现成的代码,主要是自带的User字段只有(email,username,password),所
- 没错,全网最帅的比卡丘在我这~~~为了访问 Python 库,您需要将它导入到您的 Python 环境中,使用以下命令将其导入 turtle
- Python的版本是挺折腾人的,本着简单实用的原则我介绍一下我是如何安装多版本Python的。环境:windows10(64位)Python
- python模拟登陆网页主要使用到urllib、urllib2、cookielib及BeautifulSoup等基本模块,当然进阶阶段我们还