基于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中的__init__和__new__
Mar 12 Python
python求众数问题实例
Sep 26 Python
Python可变参数函数用法实例
Jul 07 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
浅谈python中的占位符
Nov 09 Python
Python3实现转换Image图片格式
Jun 21 Python
python requests 测试代理ip是否生效
Jul 25 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
python实现AES加密解密
Mar 28 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 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批量删除数据
2007/01/18 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
面包屑导航详解
2017/12/07 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
Python程序中的观察者模式结构编写示例
2016/05/27 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
python数据封装json格式数据
2018/03/04 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
以太网Ethernet IEEE802.3
2013/08/05 面试题
综合测评自我鉴定
2013/10/08 职场文书
应付会计岗位职责
2013/12/12 职场文书
《自选商场》教学反思
2014/02/14 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
mysql创建存储过程及函数详解
2021/12/04 MySQL
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS