基于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实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
python中argparse模块用法实例详解
Jun 03 Python
Python设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
基于python进行桶排序与基数排序的总结
May 29 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
python遍历小写英文字母的方法
Jan 02 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
尝试使用Python爬取城市租房信息
Apr 12 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
react路由配置方式详解
2017/08/07 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
深入探究Django中的Session与Cookie
2017/07/30 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
Python3爬虫学习入门教程
2018/12/11 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Python内置函数locals和globals对比
2020/04/28 Python
Python 串口通信的实现
2020/09/29 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
内部类的定义、种类以及优点
2013/10/16 面试题
放飞梦想演讲稿
2014/05/05 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
教研活动主持词
2015/07/03 职场文书
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript