基于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调用top命令获得CPU利用率
Mar 10 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
Python实现的栈(Stack)
Jan 26 Python
python 显示数组全部元素的方法
Apr 19 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
python机器人运动范围问题的解答
Apr 29 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
Python中无限循环需要什么条件
May 27 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 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之第五天
2006/10/09 PHP
BBS(php & mysql)完整版(三)
2006/10/09 PHP
php 变量定义方法
2009/06/14 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
js函数的引用, 关于内存的开销
2012/09/17 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
python解析xml文件实例分享
2013/12/04 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
python实现最长公共子序列
2018/05/22 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
python 命令行传入参数实现解析
2019/08/30 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
css sprite简单实例
2016/05/23 HTML / CSS
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
护理工作感言
2014/01/16 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
关于青春的演讲稿
2014/05/05 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
2014年信用社工作总结
2014/11/25 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
对学校的意见和建议
2015/06/04 职场文书
亮剑观后感600字
2015/06/05 职场文书
导游词之南京栖霞山
2019/10/18 职场文书