基于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 获取 Linux 系统信息的代码
Jul 13 Python
Python实现二分法算法实例
Feb 02 Python
python基于windows平台锁定键盘输入的方法
Mar 05 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
解决python nohup linux 后台运行输出的问题
May 11 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
Pycharm如何自动生成头文件注释
Nov 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
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
python基础教程之Filter使用方法
2017/01/17 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
关于赌博的检讨书
2014/01/08 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
ktv好的活动方案
2014/08/17 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
清洁员岗位职责
2015/02/15 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
Python 阶乘详解
2021/10/05 Python