Python Socket TCP中文自动回复聊天程序实现与常见坑点解析

竹里
竹里
发布时间:2026-10-13 | 1人浏览过
原创

本文提供基于Python Socket和TCP协议的客户端与服务端中文自动回复聊天程序完整代码。重点解析了运行中常见的错误,如客户端误用bind而非connect,以及收发数据时必须进行编码解码以支持中文。代码经Windows 7与Python 3.4环境实测有效,适合网络编程初学者参考。

本示例展示了如何利用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相关知识,可参考本站系列教程:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》以及《Python文件与目录操作技巧汇总》。

希望本文提供的代码与解析能对您的Python程序设计学习有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表