python socket recvfrom_Python socket学习笔记(一)
最近在看 Python的视频,针对socket 编程做一个笔记
一、socket是什么?
socket 通常也称为“套接字”,用于描述 IP 地址和端口,是一个通讯链的句柄。应用程序通常通过 “套接字”向网络发出请求或者应答网络请求。说白了,就是一种通讯机制。它类似于公司的电话客服部门,你打电话的时候,那边会分配一个人回答你的问题,客服部门就相当于 socket 的服务器端了,打电话的人相当于客户端了,在和你通话结束前,如果有人在想找和你通话的哪个客服人员,是不可能的,因为你在和他通话,当然客户部门的电话交换机也不会重复分配。
socket 起源于 Unix,而Unix/Linux 基本哲学之一就是“一切皆文件”,都可以用 “打开open ->读写 wirte/read -> 关闭 close “模式来操作。 Socket就是该模式的一个实现, socket即时一种特殊的文件,一些 socket函数就是对其进行操作(读/写IO、打开、关闭)
socket 的工作模式
Socket 服务器端 编程主要包括以下几步
打开 socket
绑定到一个地址和端口
侦听进来的连接
接受连接
读取数据
Socket type
socket.AF_UNIX 只能够用于单一的 Unix 系统进程间通信
socket.AF_INET 服务器之间网络通信
socket.AF_INET6 IPv6
socket.SOCK_STREAM 流式socket,for TCP
socket.SOCK_DGRAM 数据报式socket, for UDP
socket.SOCK_RAW 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文,此外,利用原始套接字,可以通过 IP_HDRINCL套接字选项由用户构造IP头
socket.SOCK_RDM 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RDM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。
SOCK_RAM 通常仅限于高级用户或管理员运行的程序使用
socket.SOCK_SEQPACKET 可靠的连续数据包服务
Socket 函数
socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字
套接字的实例具有以下方法:
1、s.bind(address) 将套接字绑定到地址。address地址的格式取决于 地址族。 在AF_INET下,以元祖(host,port)的形式表示地址2、s.listen(backlog) 开始监听传入连接。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为1,大部分应用程序设置为5就可以了。3、s.connect(address) 连接到address 处额套接字,一般,address的格式为元组(hostname,port),如果连接同一台机器上的服务器,可以将hostname 设置为 ‘localhost’. 如果连接出错,返回 socket.error 错误。4、s.connect_ex(address) 功能与 connect(address) 相同,但是成功返回 0,失败返回 errno 的值。5、s.accept() 接受连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据,address时候连接客户端的地址。6、s.close() 关闭套接字。7、s.fileno() 返回套接字的文件描述符8、s.getpeername() 返回套接字的远程地址。返回值通常是元组(ipaddr,port)9、s.getsockname() 返回套接字自己的地址。通常是一个元组(ipaddr,port)10、s.getsockopt(level,optname[,buflen]) 返回套接字选项的值11、s.gettimeoout() 返回当前超时期的值,单位是秒,如果没有设置超时期,则返回None12、s.recv(bufsize [,flag]) 接受套接字的数据。数据以字符串形式返回,bufsize 指定要接受的最大数据量。flag 提供有关信息的其他信息,通常可以忽略。13、s.recvfrom(bufsize [,flag]) 与 recv() 类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址14、s.send(string [,flag]) 将 string 中的数据发送到连接的套接字,返回值是要发送的字节数量,该数量可能小于 string的字节大小。15、s.sendall(string [,flag]) 将 string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功为None,失败则抛出异常16、s.sendto(string[,flag],address) 将数据发送给套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。该函数主要用于UDP协议17、s.setblocking(flag) 如果flag为0,则将套接字设为非阻塞模式,否则将套接字设置为阻塞模式(默认值)。非阻塞模式下,如果调用 recv() 没有发现任何数据,或 send() 调用无法立即发送数据,那么将引起 socket.error 异常18、s.setsocketopt(level,optname,value) 设置给定套接字选项的值19、s.settimeout(timeout) 设置套接字操作的超时期,timeout 是一个浮点数,单位是秒。值为 None 表示没有超时期。一般,超时期应该在刚创建套接字的时候后设置,因为他们可能用于连接的操作(如 connect())
python socket recvfrom_Python socket学习笔记(一)相关推荐
- 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录
基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...
- Python中索引的学习笔记
1 前言 今天在学习FaceBoxes- 看到一个比较奇怪的代码,"order = scores.argsort()[::-1][:args.top_k]",不太懂这个" ...
- Python地理做图——学习笔记
Python地理做图--学习笔记 GMT 绘制海岸线 绘制地形并叠加海岸线 地理信息数据格式在线转换网址 适用OSGEO4w可以实现tif转nc,转grd 绘制grd和nc 除了投影方式-X, gmt ...
- 基于python的数字图像处理--学习笔记(三)
基于python的数字图像处理--学习笔记(三) 前言 一.灰度拉伸 二.幂律(伽马)变换 三.对数变换 前言 进入冈萨雷斯的第三章内容,并用python实现功能.我更改了代码源,之前找到太烂了,代码 ...
- Python第三方库pygame学习笔记(一)
Pygame Python最经典的2D游戏开发第三方库,也支持3D游戏开发 Pygame适合用于游戏逻辑验证.游戏入门及系统演示验证 Pygame是一种游戏开发引擎,基本逻辑具有参考价值 pygame ...
- python气象数据可视化学习笔记6——利用python地图库cnmaps绘制地图填色图并白化
文章目录 1. 效果图 2. cnmaps简介及安装 2.1 写在前面 2.2 cnmaps简介和安装 3. 导入库 4. 定义绘图函数 4.1 使用get_adm_maps返回地图边界 4.2 ax ...
- Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)
全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...
- Python+cplex运筹优化学习笔记(三)-营养膳食选择
Python+cplex运筹优化学习笔记(三)-营养膳食选择 前言 首先呢,说明一下,本文只是自己在学习过程中运用到的例子,然后规整总结一下,随便写写自己所做的一些笔记.小白学习,有不对的地方还望大家 ...
- 全国计算机等级考试二级Python精品题库学习笔记1
全国计算机等级考试二级Python精品题库学习笔记1 精品试卷01 精品试卷01程序题 基本操作题 2:随机验证码 基本操作题 3:比赛成绩计算 Turtle 绘图题:同心圆 简单应用题 2:员工工资 ...
- Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)
全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...
最新文章
- anaconda降级python失败_如何降级Python版本安装spyder?
- Xcode 报错Could not find developer disk image,iOS10
- oracle数据库简单操作
- python学习笔记(四)、条件、循环及其他语句
- ASCX呼叫ASPX.CS的方法
- offsetLeft 解析
- PHP curl采集
- 傅立叶变换是如何改变我们生活的? ——四个角度告诉你答案
- nssl1216-码灵鼠【数学】
- php定义object数据类型,PHP数据类型(4):对象object
- html 新浪博客,html
- Silverlight 2 控件 SDK 源代码
- 中通科技移动自动化测试的革新与探索
- Spark RDD Action
- C - Watchmen
- Oracle数据库索引使用及索引失效总结
- 使用FlashFTP上传文件到指定服务器
- Linux调试工具之readelf
- 用Eclipse的TaskList功能进行任务管理(提高工作效率)
- 用excel制作双层饼图_Excel 怎么用环形图制作双层饼图,excle饼状图图的制作