基于python中的TCP及UDP(详解)


Posted in Python onNovember 06, 2017

python中是通过套接字即socket来实现UDP及TCP通信的。有两种套接字面向连接的及无连接的,也就是TCP套接字及UDP套接字。

TCP通信模型

基于python中的TCP及UDP(详解)

创建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通信模型

基于python中的TCP及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()

以上这篇基于python中的TCP及UDP(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
pandas object格式转float64格式的方法
Apr 10 Python
python使用代理ip访问网站的实例
May 07 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
python地震数据可视化详解
Jun 18 Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 Python
如何在mac环境中用python处理protobuf
Dec 25 Python
python通过opencv实现图片裁剪原理解析
Jan 19 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
python开发入门——set的使用
Sep 03 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 Python
Pandas数据结构之Series的使用
Mar 31 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 #Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 #Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 #Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 #Python
Python通过命令开启http.server服务器的方法
Nov 04 #Python
Python实现一个简单的验证码程序
Nov 03 #Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 #Python
You might like
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
php实现简易计算器
2020/08/28 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
Python Flask基础教程示例代码
2018/02/07 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
如何提高python 中for循环的效率
2020/04/15 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
高中数学教学反思
2014/01/30 职场文书
制作部班长职位说明书
2014/02/26 职场文书
食品安全责任书
2014/04/15 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
工厂标语大全
2014/10/06 职场文书
求职自我推荐信
2015/03/24 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis