基于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 04 Python
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
Python 基础教程之str和repr的详解
Aug 20 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
python获取地震信息 微信实时推送
Jun 18 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 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中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
使用URL传输SESSION信息
2015/07/14 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
javascript arguments使用示例
2014/12/16 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
对python中Json与object转化的方法详解
2018/12/31 Python
python dlib人脸识别代码实例
2019/04/04 Python
python中安装django模块的方法
2020/03/12 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
一套软件开发工程师笔试题
2015/05/18 面试题
军训自我鉴定怎么写
2014/02/13 职场文书
奶茶店创业计划书
2014/08/14 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers