基于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基础教程之正则表达式基本语法以及re模块
Mar 25 Python
Python实现多并发访问网站功能示例
Jun 19 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
如何在python中使用selenium的示例
Dec 26 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
Pandas时间序列基础详解(转换,索引,切片)
Feb 26 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 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
PHP输出时间差函数代码
2013/01/28 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
php实现cookie加密的方法
2015/03/10 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
jquery+css实现下拉列表功能
2017/09/03 jQuery
angularjs实现天气预报功能
2020/06/16 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
Python中除法使用的注意事项
2014/08/21 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
Pycharm中如何关掉python console
2020/10/27 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
python time.strptime格式化实例详解
2021/02/03 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
中间件分为哪几类
2016/09/18 面试题
最新大学职业规划书范文
2013/12/30 职场文书
大二自我鉴定
2014/01/31 职场文书
医院党建工作总结2015
2015/05/26 职场文书
运动会通讯稿200字
2015/07/20 职场文书
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫