基于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入门篇之字典
Oct 17 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
Python中常见的异常总结
Feb 20 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
Django项目后台不挂断运行的方法
Aug 31 Python
Python中顺序表原理与实现方法详解
Dec 03 Python
在python image 中实现安装中文字体
May 16 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
python统计mysql数据量变化并调用接口告警的示例代码
Sep 21 Python
python调用摄像头的示例代码
Sep 28 Python
如何获取numpy array前N个最大值
May 14 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 XPath对XML文件查找及修改实现代码
2011/07/27 PHP
PHP运行模式的深入理解
2013/06/03 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
JS实现放烟花效果
2020/03/10 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
Python操作SQLite数据库的方法详解
2017/06/16 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
营销主管自我评价怎么写
2013/09/19 职场文书
大专自我鉴定范文
2013/10/01 职场文书
农救科工作职责
2013/11/27 职场文书
大客户销售经理职责
2013/12/04 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
《少年王冕》教学反思
2014/04/11 职场文书