Python学习笔记(4)-- 网络编程(1)-- socket
来源:互联网 发布:电子相册制作软件 编辑:程序博客网 时间:2024/04/30 01:37
1.基本概念
- Socket(套接字)始于BSD Unix。
- Socket家族有两种:基于文件系统的和基于网络的。
- Unix Socket是第一种,基于文件系统的,地址家族表示为:AF_UNIX(或AF_LOCAL)。
- 网络Socket是基于网络的,地址家族表示为AF_INET(AF_INET6表示ipv6)
- Python 2.5 中加入了一种 Linux 套接字的支持:AF_NETLINK(无连接[见下])套接字家族让用户代码与内核代码之间的 IPC 可以使用标准 BSD 套接字接口。
- Python 只支持 AF_UNIX,AF_NETLINK,和 AF_INET 家族。
2.socket中的地址
- socket地址包括两部分:主机与端口。
- 主机也就是计算机的IP地址。
- 端口号就是程序(进程)使用计算机中的某个端口地址。合法的端口号为0-65535,1024以下的端口为Unix系统保留。
- socket的类型:分为面向连接和无连接两种。
2.1面向链接
- 通讯之前一定要建立一条连接,面向连接的通讯方式提供了顺序的,可靠的,不会重复的数据传输,而且也不会被加上数据边界。
- 实现这种连接的主要协议就是传输控制协议(即 TCP),指定套接字类型为 SOCK_STREAM。
- 套接字使用 Internet 协议(IP)来查找网络中的主机。即TCP/IP协议来支持面向连接套接字。
2.2无连接
- 无需建立连接就可以进行通讯。
- 实现这种连接的主要协议就是用户数据报协议(即 UDP) ,指定套接字类型为 SOCK_DGRAM。
- 套接字使用 Internet 协议来查找网络中的主机。即UDP/IP协议来支持无连接套接字。
3.python中使用Socket
3.1部分函数列表
服务器端套接字函数
s.bind() 绑定地址(主机,端口号对)到套接字s.listen() 开始 TCP 监听
s.accept() 被动接受 TCP 客户的连接,(阻塞式)等待连接的到来
客户端套接字函数
s.connect() 主动初始化 TCP 服务器连接s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛异常公共用途的套接字函数
s.recv() 接收 TCP 数据
s.send() 发送 TCP 数据
s.sendall() 完整发送 TCP 数据
s.recvfrom() 接收 UDP 数据
s.sendto() 发送 UDP 数据
s.getpeername() 连接到当前套接字的远端的地址
s.getsockname() 当前套接字的地址
s.getsockopt() 返回指定套接字的参数
s.setsockopt() 设置指定套接字的参数
s.close() 关闭套接字
Blocking-Oriented Socket Methods
s.setblocking() 设置套接字的阻塞与非阻塞模式s.settimeout()a 设置阻塞套接字操作的超时时间
s.gettimeout()a 得到阻塞套接字操作的超时时间
面向文件的套接字的函数
s.fileno() 套接字的文件描述符s.makefile() 创建一个与该套接字关连的文件
3.2其他模块
3.2.1SocketServer
3.2.2Twisted
- Python学习笔记(4)-- 网络编程(1)-- socket
- python 网络编程基础学习笔记(1)-网络客户端-socket
- Python学习笔记--网络编程, socket
- Python学习笔记:网络编程(socket)
- 网络编程学习笔记(一)-----socket
- Socket网络编程学习笔记(转)
- python网络编程学习笔记(1)--网络编程背景
- Python之学习笔记(socket编程)
- Socket网络编程学习笔记(1):常用方法介绍
- Socket网络编程学习笔记(1):常用方法介绍
- Socket网络编程学习笔记(1):常用方法介绍
- Socket网络编程学习笔记(1):常用方法介绍
- python网络编程(socket)
- python --------------网络(socket)编程
- Python学习笔记(七) -- Python Socket 网络编程
- python 网络编程笔记-socket
- python网络编程学习笔记(一)
- python网络编程学习笔记(一)
- Web App安装
- mongodb 随机查询
- Bugzilla安装
- imx53 android patch r10.4 for android 2.3.7_r1
- iOS开发 XCode4 iOS5 改变UINavigationController的UINavigationBar的高度和背景图片 V1
- Python学习笔记(4)-- 网络编程(1)-- socket
- 解决方案"System.InvalidOperationException: 配置有 NoSecurityChanges 标志的 AppDomainManager 修改了 AppDomain 的安全状
- Perl模块安装
- LM4F120 2.5.1 异常状态
- rman 增量备份
- 使用 getopt() 进行命令行处理
- Freescale mma845x三轴加速度传感器驱动分析
- expect脚本自动登录
- [gif]GIF图形文件格式文档