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最好的方法就是去看官网,里面有详细的 ...
随机推荐
- hibernate 中一对多的注解配置
//一方@Entity@Table(name="test_classinfo")public class ClassInfo { @Id @SequenceGenerator(na ...
- IIS中利用ARR实现反向代理
反向代理是什么,不了解的,请自行百度.本人也是最近才研究这个主题,简单的来说,利用这项技术可以实现负载均衡,安全控制等web应用中重要的功能,对于web应用来说这是个很基础,也很重要的技术,值得开发者 ...
- input限制数字输入
onkeyup="this.value=this.value.replace(/\D/g,'')"
- goim源码分析与二次开发-comet分析二
这篇就是完全原版了,作为一个开始,先介绍comet入口文件main.go 第一步是初始化配置,还有白名单.还有性能监口,整体来说入口代码简洁可读性很强 然后开始初始化监控,还有bukcet这里buck ...
- ReportViewer工具栏功能扩展[手动设置打印/导出按钮]
ReportViewer在IE11后打印按钮就存在兼容问题,火狐,谷歌也存在打印按钮显示的兼容性问题,本资料就是解决ReportViewer打印按钮显示的问题, 通过自己写脚本添加到DOM里面让所有浏 ...
- iOS codeview
1.环境配置 oclint:http://oclint.org/ xcpretty:https://github.com/supermarin/xcpretty 使用Mac安装xcpretty过程可能 ...
- Django的models介绍
我们一般会在创建表的类中写一个__str__方法,就会为为了打印这个对象不会打印一大堆的对象的内存地址,而是我们想要他返回的信息,方便我们更直观的知道这个对象是谁,方便显示.比如下面的例子 from ...
- java web 常用正则
什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配. 通常用于格式验证.正则替换.查找子串等 各种编程语言的正则表达式基本相同 ...
- Nginx配置杂记(转)
转至:http://www.cnblogs.com/kuangke/p/5619400.html Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,相较 ...
- Visual Studio宏
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)MS ...