基于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简单计算文件夹大小的方法
Jul 14 Python
浅谈Python的Django框架中的缓存控制
Jul 24 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
Python使用filetype精确判断文件类型
Jul 02 Python
django中静态文件配置static的方法
May 20 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
python ftplib模块使用代码实例
Dec 31 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 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
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
php修改数组键名的方法示例
2017/04/15 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
javascript 函数调用规则
2009/08/26 Javascript
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
详解python之配置日志的几种方式
2017/05/22 Python
关于python写入文件自动换行的问题
2018/06/23 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
2014年教师节寄语
2014/04/03 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
小学语文教学随笔
2015/08/14 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
MySQL触发器的使用
2021/05/24 MySQL
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL