Python socket网络编程TCP/IP服务器与客户端通信
发布时间 - 2026-01-10 22:19:19 点击率:次Python socket网络编程

初学 python,前段时间买了两本书《python 编程从入门到实践》《Python 核心编程第三版》,第一本书主要讲的是一些基本语法和一些基本的使用方法,而第二本则深入很多,自己看来也是一知半解,刚好看到了这部分网络编程,依然有好多不太理解的地方,不过想来通过自己不断的摸索,不断地搜寻资料学习,早晚应该会变得通透吧.......
这部分主要使用的模块就是 socket 模块,在这个模块中可以找到 socket()函数,该函数用于创建套接字对象,套接字也有自己的方法集,这些方法可以实现基于套接字的网络通信。
socket()模块函数
要创建套接字,必须使用 socket.socket()函数,他一般的语法如下
socket(socket_family, socket_type, protocol=0)
其中socket_family是 AF_UNIX或 AF_INET,socket_type 是 SOCK_STREAM 或 SOCK_DGRAM,protocol 通常省略,默认=0.
所以创建 TCP/IP 套接字,可以使用下面的方式调用 socket.socket().
tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
同样创建 UDP/IP 套接字,使用下面的方法调用
udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
创建 TCP 服务器
创建 TCP 服务器的流程基本如下,并非正真正的代码
ss = socket() #创建服务器套接字
ss.bind() #套接字与地址绑定
ss.listen() #监听连接
inf_loop: #服务器无限循环
cs = ss.accepr() #接受客户端连接
comm_loop: #通信循环
cs.recv()/cs.send() #对话(接收/发送)
cs.close() #关闭客户端套接字
ss.close() #关闭服务器套接字(可选)
实际中创建 TCP 服务器基本流程就如上边所说,可能稍有不同但基本思路应该是相通的,下边是真正穿件服务器的代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from socket import * #将 socket 属性引入到命名空间
HOST = '' #这是对 bind()方法的标识表示可以使用任何可用的地址
PORT = 21571 #端口号
BUFSIZ = 1024 #缓冲区大小,1kb
ADDR = (HOST,PORT) #地址????
tcpSerSocket = socket(AF_INET,SOCK_STREAM) #创建 tcp 套接字
tcpSerSocket.bind(ADDR) #将地址绑定到套接字上
tcpSerSocket.listen(5) #设置并启动套接字监听
while True: #无限循环,等待客户端连接
print('waiting for connection...')
tcpCliSocket,addr = tcpSerSocket.accept() #被动接受客户端连接
print('...connected from:',addr)
while True: #对话循环,等待客户端发送消息
data = tcpCliSocket.recv(BUFSIZ) #接收客户端消息
if not data: #如果消息是空白,跳出对话循环,关闭当前连接
break
tcpCliSocket.send(data) #如果收到消息,将消息原封不动返回客户端
tcpCliSocket.close()
tcpSerSocket.close()
创建 TCP 客户端
同上边一样,一个简单的非代码流程
cs = socket() #创建客户端套接字
cs.connect() #尝试连接服务器
comm_loop: #通信循环
cs.send()/cs.recv() #对话(发送/接收)
cs.close() #关闭客户端套接字
实际中创建客户端也是翻译上边的步骤
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from socket import *
HOST = 'localhost' #服务器的主机名
PORT = 21571 #端口号
BUFSIZ = 1024 #缓冲区
ADDR = (HOST,PORT) #地址
tcpCliSocket = socket(AF_INET,SOCK_STREAM) #创建客户端套接字
tcpCliSocket.connect(ADDR) #连接服务器
while True: #通信循环
data = input('> ') #客户端输入信息
if not data: #如果输入信息为空,则跳出循环,关闭通信
break
data = str.encode(data)
tcpCliSocket.send(data) #发送客户端信息
data = tcpCliSocket.recv(BUFSIZ) #接受服务器返回信息
if not data: #如果服务器未返回信息,关闭通信循环
break
print('get:',data.decode('utf-8'))
tcpCliSocket.close()
当然,这只是最基础的通信,而且关于主机名,端口号之类的东西暂时还不是很懂,目前所做的只是在同一台电脑上通信,端口号也需要一致,如果不同的电脑进行通信该怎么做?我还只是个小白.....
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Python
# socket网络编程
# socket网络编程实例详解
# socket网络
# Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
# python使用socket创建tcp服务器和客户端
# Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
# Python基于socket实现TCP客户端和服务端
# 客户端
# 端口号
# 这部
# 可以使用
# 绑定
# 自己的
# 网络编程
# 这是
# 也有
# 我还
# 在这个
# 本书
# 不太
# 买了
# 原封不动
# 不是很
# 希望能
# 这只
# 可选
# 怎么做
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何用wdcp快速搭建高效网站?
如何正确下载安装西数主机建站助手?
JavaScript Ajax实现异步通信
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
Laravel怎么使用artisan命令缓存配置和视图
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
如何用搬瓦工VPS快速搭建个人网站?
如何在云指建站中生成FTP站点?
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
详解Android——蓝牙技术 带你实现终端间数据传输
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
iOS正则表达式验证手机号、邮箱、身份证号等
java中使用zxing批量生成二维码立牌
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
如何在云服务器上快速搭建个人网站?
如何将凡科建站内容保存为本地文件?
制作公司内部网站有哪些,内网如何建网站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Android中AutoCompleteTextView自动提示
javascript基于原型链的继承及call和apply函数用法分析
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
如何在万网自助建站中设置域名及备案?
JS中对数组元素进行增删改移的方法总结
微信小程序 闭包写法详细介绍
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
如何快速查询网站的真实建站时间?
无锡营销型网站制作公司,无锡网选车牌流程?
如何在IIS中新建站点并配置端口与IP地址?
深圳网站制作平台,深圳市做网站好的公司有哪些?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Java解压缩zip - 解压缩多个文件或文件夹实例
米侠浏览器网页背景异常怎么办 米侠显示修复
Swift开发中switch语句值绑定模式
Python文件流缓冲机制_IO性能解析【教程】
如何获取PHP WAP自助建站系统源码?
JavaScript如何操作视频_媒体API怎么控制播放
Laravel如何使用Gate和Policy进行授权?(权限控制)
如何用已有域名快速搭建网站?
如何在腾讯云服务器快速搭建个人网站?
EditPlus中的正则表达式实战(6)
七夕网站制作视频,七夕大促活动怎么报名?
js实现获取鼠标当前的位置
香港服务器WordPress建站指南:SEO优化与高效部署策略
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
Java类加载基本过程详细介绍
Laravel如何创建自定义中间件?(Middleware代码示例)

