socket&socketserver网络编程
1、套接字与套接模块
套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。
套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳。许多非BSD UNIX系统(如ms-dos,windows,os/2,mac os及大部分主机环境)都以库形式提供对套接字的支持。
三种最流行的套接字类型是:stream,datagram和raw。stream和datagram套接字可以直接与TCP协议进行接口,而raw套接字则接口到IP协议。但套接字并不限于TCP/IP。
套接字模块是一个非常简单的基于对象的接口,它提供对低层BSD套接字样式网络的访问。使用该模块可以实现客户机和服务器套接字。要在python 中建立具有TCP和流套接字的简单服务器,需要使用socket模块。利用该模块包含的函数和类定义,可生成通过网络通信的程序。
python提供了两个级别访问的网络服务:
- 低级的网络服务支持基本的socket,它提供了标准的BSD sockets API,可以访问底层操作系统socket接口的全部方法
- 高级别的网络服务模块socketServer,它提供了服务器中心类,可以简化网络服务器的开发
2、socket模块方法
socket.socket(family = AF_INET,type = SOCK_STREAM,proto = 0,fileno = None ) :使用给定的地址系列,套接字类型和协议号创建一个新套接字
socket.socketpair([ family [,type [,proto ] ] ] ):使用给定的地址系列,套接字类型和协议编号构建一对连接的套接字对象
socket.create_connection(address [,timeout [,source_address ] ] ):连接到侦听Internet 地址(2元组 )的TCP服务,然后返回套接字对象
socket.fromfd(fd,family,type,proto = 0 ):复制文件描述符fd(由文件对象的fileno()方法返回的整数 ),并从结果中构建一个套接字对象
socket.fromshare(data):从该socket.share() 方法获得的数据实例化一个套接字。假设套接字处于阻塞模式。
socket.SocketType:这是表示套接字对象类型的Python类型对象。这是一样的type(socket(...))
socket.getaddrinfo(host,port,family = 0,type = 0,proto = 0,flags = 0 ):将主机 / 端口参数转换为5元组序列,其中包含创建连接到该服务的套接字的所有必要参数
socket.getfqdn([ name ] ):为名称返回完全限定的域名。如果名称被省略或为空,则被解释为本地主机
socket.gethostbyname(hostname):将主机名转换为IPv4地址格式。IPv4地址以字符串形式返回
socket.gethostbyname_ex(hostname):将主机名转换为IPv4地址格式,扩展接口。返回一个triple ,其中主机名是响应给定ip_address的主要主机名,aliaslist是同一地址的备用主机名(可能为空)列表,ipaddrlist是同一主机上同一接口的IPv4地址列表经常但不总是一个地址)。不支持IPv6名称解析,应该用于IPv4 / v6双栈支持
socket.gethostname():返回包含Python解释器当前正在执行的机器的主机名的字符串
socket.gethostbyaddr(ip_address ):返回一个triple ,其中hostname是响应给定ip_address的主要主机名,aliaslist是同一地址的备用主机名(可能为空)列表, ipaddrlist是同一个接口的IPv4 / v6地址列表主机(最有可能只包含一个地址)。要找到完全限定的域名,请使用该功能。支持IPv4和IPv6
socket.getnameinfo(sockaddr,flags ):将套接字地址sockaddr翻译成2元组。根据标志的设置,结果可以在主机中包含完全限定的域名或数字地址表示。同样,端口可以包含字符串端口名称或数字端口号。(host, port)
socket.getprotobyname(protocolname ):将Internet协议名称(例如,'icmp')转换为适合作为(可选)第三个参数传递给该socket() 函数的常量。这通常只需要以“原始”模式(SOCK_RAW)打开的套接字; 对于正常的套接字模式,如果协议被省略或为零,则自动选择正确的协议
socket.getservbyname(servicename [,protocolname ] ):将Internet服务名称和协议名称转换为该服务的端口号。可选的协议名称,如果有,应该是'tcp'或 'udp',否则任何协议将匹配
socket.getservbyport(port [,protocolname ] ):将Internet端口号和协议名称转换为该服务的服务名称。可选的协议名称,如果有,应该是'tcp'或 'udp',否则任何协议将匹配
socket.ntohl(x ):将32位正整数从网络转换为主机字节顺序。在主机字节顺序与网络字节顺序相同的机器上,这是无操作的; 否则,它会执行一个4字节的交换操作。
socket.ntohs(x ):将16位正整数从网络转换为主机字节顺序。在主机字节顺序与网络字节顺序相同的机器上,这是无操作的; 否则,它执行一个2字节的交换操作
socket.htonl(x )将32位正整数从主机转换为网络字节顺序。在主机字节顺序与网络字节顺序相同的机器上,这是无操作的; 否则,它会执行一个4字节的交换操作。
socket.htons(x )将16位正整数从主机转换为网络字节顺序。在主机字节顺序与网络字节顺序相同的机器上,这是无操作的; 否则,它执行一个2字节的交换操作
socket.inet_aton(ip_string ):将IPv4地址从点分四字符串格式(例如“123.45.67.89”)转换为32位打包二进制格式,作为长度为4个字符的字节对象。当与使用标准C库的程序进行交谈并且需要类型对象
socket.getdefaulttimeout():返回新套接字对象的默认超时值(秒)(float)。值None表示新的套接字对象没有超时。首次导入套接字模块时,默认为None。
socket.setdefaulttimeout(timeout):为新的套接字对象设置默认的超时值(秒)(float)。首次导入套接字模块时,默认为None。请参阅 settimeout()可能的值和它们各自的含义。
socket.sethostname(name):将机器的主机名称设为名称。OSError如果你没有足够的权利,这将会提高 。
socket.if_nameindex():返回网络接口信息列表(index int,name string)元组。 OSError如果系统调用失败。
socket.if_nametoindex(if_name ):返回接口名称对应的网络接口索引号。 OSError如果没有给定名称的接口存在。
socket.if_indextoname(if_index ):返回接口索引号对应的网络接口名称。 OSError如果没有给定索引的接口存在。
3、socket链接
socket&socketserver网络编程的更多相关文章
- python3之socket&socketserver网络编程
1.套接字与套接模块 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了 ...
- 浅谈JAVA中如何利用socket进行网络编程(二)
转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...
- 浅谈JAVA中如何利用socket进行网络编程(一)
转自:http://developer.51cto.com/art/201106/268385.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...
- Linux 系统编程 学习:06-基于socket的网络编程1:有关概念
Linux 系统编程 学习:006-基于socket的网络编程1:有关概念 背景 上一讲 进程间通信:System V IPC(2)中,我们介绍了System IPC中关于信号量的概念,以及如何使用. ...
- Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信
Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信 背景 上一讲我们介绍了网络编程的一些概念.socket的网络编程的有关概念 这一讲我们来看UDP 通信. 知识 U ...
- Python Socket,How to Create Socket Server? - 网络编程实例
文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...
- Python Socket,How to Create Socket Cilent? - 网络编程实例
文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...
- Socket 的网络编程
socket 网络编程的服务端: 1) 创建socket 套接字. 2) 和socket绑定主机地址和端口 3) socket 主动监听端口,看又没有来连接. 4) 当执行到 accept() 时, ...
- Python3 Socket和SocketServer 网络编程
socket只能实现同时一个服务和一个客户端实现交互,socketserver可以实现多个客户端同时和服务端交互 1.利用Socket编写简单的同一个端口容许多次会话的小案例: 服务端: #!/usr ...
随机推荐
- ojdbc14:11.2.0.1.0出错
首先在相关目录下找到你的ojdbc14的包:比如 我的出错问题:(之前是11.2.0.1.0,后改为10.2.0.1.0) 我的包路径:C:\my_java\maven_repository\com\ ...
- Django之组合查询
一 .Django组合查询 很多电商网站中有组合搜索的功能,所谓组合搜索就是网页中组合多个条件,对数据库中进行查询,并且将结果显示在页面中,下面是所做组合查询效果图: 实现代码如下: <1> ...
- .net 导入Excel
今天我在做导入Excel的时候遇到了一些问题,顺便说句其实我很少做这方面的!我的需求是导入EXCEL 验证数据正确性 并把数据显示到页面 如有错误信息则弹出来 那具体问题是什么呢? 导入Excel有2 ...
- idea 解决git冲突
1.提交本地代码到本地仓库 2.啦取远程代码 不进行merge 3.冲突文件会显示 >>> head ===== 4.删除 >>> head ===== ...
- cmake处理多源文件目录
cmake处理多源文件目录 假设我们的源文件全部在src中,则我们需要在子文件src中建立文件CmakeLists.txt,内容如下: AUX_SOURCE_DIRECTORY(. DIR_TEST_ ...
- Ubuntu中的Docker搭建Tensorflow环境
一.docker环境安装 1)更新.安装依赖包 sudo apt-get update sudo apt-get install apt-transport-https ca-certificates ...
- 使用SeaJS,require加载Jquery的时候总是为null
这个问题困扰了我两天,使用别人的例子.官网down下来的example都没有问题.但是放到自己项目里就 var $=require("jquery") 为null. 后来发现,jq ...
- F - Truck History
F - Truck History #include<cstdio> #include<cstring> #include<iostream> #include&l ...
- redis.conf 配置项说明
redis.conf 配置项说明如下: Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 当Redis以守护进程方式运行时,Redis ...
- iOS-UIApplication详解
UIApplication简介 UIApplication对象是应用程序的象征. 每一个应用程序都有自己的UIApplication对象,而且是单例. 一个iOS程序启动后创建的第一个对象就是UIAp ...