基于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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
python使用锁访问共享变量实例解析
Feb 08 Python
python 基本数据类型占用内存空间大小的实例
Jun 12 Python
深入浅析Python的类
Jun 22 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
python实现实时视频流播放代码实例
Jan 11 Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 Python
Django通过json格式收集主机信息
May 29 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
Python函数递归调用实现原理实例解析
Aug 11 Python
python如何构建mock接口服务
Jan 28 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
一个分页的论坛
2006/10/09 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
Python实现简单的2048小游戏
2021/03/01 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
学生励志演讲稿
2014/01/06 职场文书
给面试官的感谢信
2014/02/01 职场文书
中学生打架检讨书
2014/02/10 职场文书
毕业生面试求职信
2014/06/23 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
教师师德考核自我评价
2014/09/13 职场文书