基于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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
python中随机函数random用法实例
Apr 30 Python
Python解析nginx日志文件
May 11 Python
Python实现程序的单一实例用法分析
Jun 03 Python
Python查询阿里巴巴关键字排名的方法
Jul 08 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 Python
python模拟斗地主发牌
Apr 22 Python
Python如何爬取qq音乐歌词到本地
Jun 01 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 Python
Python实现简单得递归下降Parser
May 02 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 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
php gzip压缩输出的实现方法
2013/04/27 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
Javascript函数的参数
2015/07/16 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
python字典操作实例详解
2017/11/16 Python
python实现简单名片管理系统
2018/11/30 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
django创建css文件夹的具体方法
2020/07/31 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
如何用Django处理gzip数据流
2021/01/29 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
综治宣传月活动总结
2014/04/28 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
婚育证明格式
2015/06/17 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python