基于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使用xlrd模块操作Excel数据导入的方法
May 26 Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
django创建自定义模板处理器的实例详解
Aug 14 Python
机器学习python实战之决策树
Nov 01 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
Pandas分组与排序的实现
Jul 23 Python
Python pandas库中的isnull()详解
Dec 26 Python
Python使用re模块验证危险字符
May 21 Python
Python闭包及装饰器运行原理解析
Jun 17 Python
Python面向对象之内置函数相关知识总结
Jun 24 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
PHP实现简单计算器小程序
2020/08/28 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
python人民币小写转大写辅助工具
2018/06/20 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
python pandas模块基础学习详解
2019/07/03 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
CSS3控制HTML元素动画效果
2014/02/08 HTML / CSS
HTML5注册页面示例代码
2014/03/27 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
水利学院求职自荐书
2014/02/01 职场文书
公益广告标语
2014/06/19 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
学前班语言教学计划
2015/01/20 职场文书
毕业论文致谢词
2015/05/14 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
图文详解nginx日志切割的实现
2022/01/18 Servers