Socket常用语法与socketserver实例
1》Socket相关:
1>Socket Families(地址簇):
socket.AF_UNIX 本机进程间通信
socket.AF_INET IPV4
socket.AF_INET6 IPV6
2>Socket Types:
socket.SOCK_STREAM #for tcp
socket.SOCK_DGRAM #for udp
socket.SOCK_RAW #原始套接字,普通的套接字无法处理ICMP,IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的 IPv4报文,此外利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头;
socket.SOCK_RDM #是一种可靠的UDP形式,即保证交付数据报但不保证顺序;SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊 操作时使用,如发送ICMP报文,SOCK_RAM通常仅限于高级用户或管理员运行的程序使用;
socket.SOCK_SEQPACKET #废弃了
3>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]])
socket.getaddrinfo(host,port,family=0,type=0,proto=0,flags=0) # 获取要连接的对端主机地址;
sk.bind(address)
s.bind(address):将套接字绑定到地址,address地址的格式取决于地址簇,在AF_INET下,以(host,port)的形式表示地址;
sk.listen(backlog):开始监听传入连接,backlog指定在拒绝连接之前,可以挂起的最大连接数量;backlog等于5,表示内核已经接到了连接请求,但服务器还 没有调用accept进行处理的连接个数,这个值不能无限大,因为要在内核中维护连接队列;
sk.setblocking(bool):是否阻塞(默认True),如果设置False,那么accept和recv时一旦无数据,则报错;
sk.accept():接受连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据,address用来接收客户端的地址;接收TCP客户的连 接(阻塞式)等待连接的到来;
sk.connect(address):连接到address处的套接字,一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误;
sk.connect_ex(address):同上,只不过会有返回值,连接成功时返回0,连接失败时返回编码,列如10061;
sk.close():关闭套接字;
sk.recv(bufsize[,flag]):接受套接字的数据,数据以字符串形式返回,bufsize指定最多可接收的数量,flag提供有关信息,通常可以忽略;
sk.recvfrom(bufsize[,flag]):与recv()类似,但返回值是(data,address),其中data是包含接收数据的字符串,address是套接字地址;
sk.send(string[,flag]):将string中的数据发送到连接的套接字,返回值是要发送的字节数量,该数量可能小于string的字节数量,即可能未将指定内容全部发 送;
sk.sendall(string[,flag]):将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据,成功则返回None,否则失败;内部通过递归调用send,将所 有内容发送出去;
sk.sendto(string[,flag],address):将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定运程地址,该函数主要用于UDP协议;
sk.settimeout(timeout):设置套接字操作的超时期,timeout是一个浮点数,单位是秒,值为None表示没有超时期,一般应该在刚创建套接字时设置,因为他们 可能用于连接的操作(如client连接最多等待5s);
sk.getpeername():返回连接套接字的远程地址,返回值通常是元组(ipaddr,port);
sk.getsockname():返回套接字自己的地址,通常是一个元组(ipaddr,port);
sk.fileno():套接字的文件描述符;
socket.sendfile(file,offset=0,count=None);发送文件,但目前多数情况下并无什么用;
2》Socket Server:
1>常用的socket server:
class socketserver.ForkingTCPServer
class socketserver.ForkingUDPServer
class socketserver.ThreadingTCPServer
class socketserver.ThreadingUDPServer
2>
2》Socketserver实例:
服务器端:
客户端:

实例效果:
客户端:

Socket常用语法与socketserver实例的更多相关文章
- Python 第八篇:异常处理、Socket语法、SocketServer实现多并发、进程和线程、线程锁、GIL、Event、信号量、进程间通讯
本节内容: 异常处理.Socket语法.SocketServer实现多并发.进程和线程.线程锁.GIL.Event.信号量.进程间通讯.生产者消费者模型.队列Queue.multiprocess实例 ...
- ES6常用语法
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...
- Memcached常用语法与java连接服务
memcached常用语法及java使用方式 Author:SimpleWu Memcached 存储命令 Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中 ...
- php正则表达式入门-常用语法格式
php正则表达式入门-常用语法格式 原文地址:http://www.jbxue.com/article/24467.html 分享下php正则表达式中的一些常用语法格式,用于匹配字母.数字等,个人感觉 ...
- 转:python常用运维脚本实例
python常用运维脚本实例 转载 file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函 ...
- python常用运维脚本实例【转】
file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件 . 首先 ...
- XPath语法规则及实例
XPath语法规则及实例 XPath语法规则 一.XPath术语: 1.节点:在XPath中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点. XML文档是被作为节点树 ...
- ES6常用语法简介import export
ES6常用语法简介import export let与var用法区别 //var var a = []; for (var i = 0; i < 10; i++) { a[i] = functi ...
- Spring 框架常用语法进行总结
Spring 框架常用语法进行总结: spring框架的二大主要的功能就是IOC和AOP. IOC: 控制反转(依赖注入) AOP: 面向切面编程 学习spring最好的方法就是去看官网,里面有详细的 ...
随机推荐
- SQL 数据库事务 存储过程练习
数据库事务: 数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源. ...
- Java http请求和调用(二)
http请求代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader ...
- gff/gtf格式
1)gff3及gtf2简介 一个物种的基因组测序完成后,需要对这些数据进行解读,首先要先找到这些序列中转录起始位点.基因.外显子.内含子等组成元件在染色体中的位置信息(即注释)后才能再进行深入的分析. ...
- Java RSA 生成公钥 私钥
目前为止,RSA是应用最多的公钥加密算法,能够抵抗已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准. RSA算法中,每个通信主体都有两个钥匙,一个公钥(Public Key)用来对数据进行加密 ...
- webdriver屏幕截图(python)
webdriver对当前页面进行截图,截取的是当前页面的全图,不论页面有多长,有两种截图方法 1.get_screenshot_as_file(XXX) 2.save_screenshot(XXX) ...
- ThreadPoolExecutor的execute源码分析
上一篇文章指出,ThreadPoolExecutor执行的步骤如下: 向线程池中添加任务,当任务数量少于corePoolSize时,会自动创建thead来处理这些任务: 当添加任务数大于corePoo ...
- org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException
使用Intelij Idea时,报错如下: org.apache.catalina.core.StandardContext.listenerStart Error configuring appli ...
- windows系统如何真正隐藏文件夹[转载]
方法一(推荐)eg:现需隐藏e盘bak目录下的tools文件夹e:\bak\tools运行:cmd键入:attrib +s +a +h +r e:\bak\tools然后,你再进去看e盘bak目录下, ...
- php下的原生ajax请求
浏览器中为我们提供了一个JS对象XMLHttpRequet,它可以帮助我们发送HTTP请求,并接受服务端的响应. 意味着我们的浏览器不提交,通过JS就可以请求服务器. ajax(Asynchron ...
- vsftp上传文件出现553 Could not create file
没有权限创建文件或是目录,原因是selinux引起的登陆问题. 通过如下命令查看状态: > sestatus -b|grep ftp 设置allow_ftpd_full_access为on. 在 ...