基于python中的TCP及UDP(详解)
作者:黑桃不是吃的 时间:2023-12-22 19:54:38
python中是通过套接字即socket来实现UDP及TCP通信的。有两种套接字面向连接的及无连接的,也就是TCP套接字及UDP套接字。
TCP通信模型
创建TCP服务器
伪代码:
ss = socket() # 创建服务器套接字
ss.bind() # 套接字与地址绑定
ss.listen() # 监听连接
inf_loop: # 服务器无限循环
cs = ss.accept() # 接受客户端连接
comm_loop: # 通信循环
cs.recv()/cs.send() # 对话(接收/发送)
cs.close() # 关闭客户端套接字
ss.close() # 关闭服务器套接字#(可选)
TCP时间戳服务器:
import socket
from time import ctime
HOST = ''
PORT = 8099
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print("等待连接......")
tcpCliSock, addr = tcpSerSock.accept()
print("...接收到连接:", addr)
while True:
data = tcpSerSock.recv(BUFSIZE)
if not data:
break
tcpCliSock.send('[%s] %s' % (bytes(ctime(), 'utf-8'), data))
tcpCliSock.close()
tcpSerSock.close()
创建TCP客户端:
伪代码:
cs = socket() # 创建客户端套接字
cs.connect() # 尝试连接服务器
comm_loop: # 通信循环
cs.send() / cs.recv() # 对话(发送/接收)
cs.close() # 关闭客户端套接字
TCP时间戳客户端:
import socket
HOST = 'localhost'
PORT = 8099
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data = input("> ")
if not data:
break
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZE)
if not data:
break
print(data)
tcpCliSock.close()
UDP通信模型
创建UDP服务器
伪代码:
ss = socket() # 创建服务器套接字
ss.bind() # 绑定服务器套接字
inf_loop: # 服务器无限循环
cs = ss.recvfrom()/ss.sendto() # 关闭(接收/发送)
ss.close() # 关闭服务器套接字
UDP时间戳服务器:
import socket
from time import ctime
HOST = ''
PORT = 8099
BUFSIZE = 1024
ADDR = (HOST, PORT)
udpSerSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpSerSock.bind(ADDR)
while True:
print("等待连接......")
data, addr = udpSerSock.recvfrom(BUFSIZE)
udpSerSock.sendto('[%s] %s' % (ctime(), data), addr)
print("...接收到连接:", addr)
udpSerSock.close()
创建UDP客户端
伪代码:
cs = socket() # 创建客户端套接字
comm_loop: # 通信循环
cs.sendto() / cs.recvfrom() # 对话(发送/接收)
cs.close() # 关闭客户端套接字
UDP时间戳客户端:
import socket
HOST = 'localhost'
PORT = 8099
BUFSIZE = 1024
ADDR = (HOST, PORT)
udpCliSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpCliSock.connect(ADDR)
while True:
data = input("> ")
if not data:
break
udpCliSock.sendto(data, ADDR)
data, ADDR = udpCliSock.recvfrom(BUFSIZE)
if not data:
break
print(data)
udpCliSock.close()
来源:http://www.cnblogs.com/wulaa/p/7787993.html
标签:python,TCP,UDP
0
投稿
猜你喜欢
解决tensorflow 释放图,删除变量问题
2023-08-10 09:42:47
Python自动重新加载模块详解(autoreload module)
2023-09-19 04:36:12
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021-04-13 08:17:01
Django Auth用户认证组件实现代码
2022-05-02 18:06:01
Mysql双主配置的详细步骤
2024-01-28 14:21:49
Python first-order-model实现让照片动起来
2022-04-13 10:25:48
Python深度学习之FastText实现文本分类详解
2022-09-03 10:35:28
CSS文件的编码要和页面的编码相一致
2010-06-06 13:59:00
oracle 服务启动,关闭脚本(windows系统下)
2009-07-26 08:57:00
发个js从样式表取值的函数
2008-05-20 12:23:00
python中requests库session对象的妙用详解
2021-10-30 14:42:58
GoLang channel关闭状态相关操作详解
2024-04-26 17:26:52
如何go语言比较两个对象是否深度相同
2024-02-18 21:21:58
win10环境安装kettle与linux环境安装kettle的详细过程
2022-12-17 09:58:21
Python编写屏幕截图程序方法
2022-10-04 11:11:47
一文详解Python中多进程和进程池的使用方法
2023-12-01 04:10:12
解决python DataFrame 打印结果不换行问题
2023-11-20 23:12:25
浅谈购物类网站如何保持视觉设计的一致性
2009-03-30 16:02:00
15款最佳jQuery LightBox插件
2010-09-25 12:41:00
MySQL字段类型说明
2007-09-27 19:22:00