Python socket 模块
来源:互联网 发布:无锡激光编程招聘信息 编辑:程序博客网 时间:2024/06/04 00:24
Python socket 模块
Python 提供了两个基本的 socket 模块。第一个是 Socket
,它提供了标准的 BSD Sockets API。第二个是 SocketServer
,它提供了服务器中心类,可以简化网络服务器的开发。Python 使用一种异步的方式来实现这种功能,您可以提供一些插件类来处理服务器中应用程序特有的任务。表 1 列出了本节所涉及的类和模块。
让我们来看一下这些模块,以便理解它们是如何工作的。
Socket
模块提供了 UNIX® 程序员所熟悉的基本网络服务(也称为 BSD API)。这个模块中提供了在构建 socket 服务器和客户机时所需要的所有功能。
这个 API 与标准的 C API 之间的区别在于它是面向对象的。在 C 中,socket 描述符是从 socket 调用中获得的,然后会作为一个参数传递给 BSD API 函数。在 Python 中,socket
方法会向应用 socket 方法的对象返回一个 socket 对象。表 2 给出了几个类方法,表 3 显示了一部分实例方法。
Socket
低层网络接口(每个 BSD API)socket.socket(family, type)
创建并返回一个新的 socket 对象socket.getfqdn(name)
将使用点号分隔的 IP 地址字符串转换成一个完整的域名socket.gethostbyname(hostname)
将主机名解析为一个使用点号分隔的 IP 地址字符串socket.fromfd(fd, family, type)
从现有的文件描述符创建一个 socket 对象sock.bind( (adrs, port) )
将 socket 绑定到一个地址和端口上sock.accept()
返回一个客户机 socket(带有客户机端的地址信息)sock.listen(backlog)
将 socket 设置成监听模式,能够监听 backlog 外来的连接请求sock.connect( (adrs, port) )
将 socket 连接到定义的主机和端口上sock.recv( buflen[, flags] )
从 socket 中接收数据,最多 buflen
个字符sock.recvfrom( buflen[, flags] )
从 socket 中接收数据,最多 buflen
个字符,同时返回数据来源的远程主机和端口号sock.send( data[, flags] )
通过 socket 发送数据sock.sendto( data[, flags], addr )
通过 socket 发送数据sock.close()
关闭 socketsock.getsockopt( lvl, optname )
获得指定 socket 选项的值sock.setsockopt( lvl, optname, val )
设置指定 socket 选项的值类方法 和 实例方法 之间的区别在于,实例方法需要有一个 socket 实例(从 socket 返回)才能执行,而类方法则不需要。
1、服务端-echoserver.py
- #!/usr/bin/python
- "USAGE: echoserver.py <port>"
- from SocketServer import BaseRequestHandler, TCPServer
- import sys, socket
- class EchoHandler(BaseRequestHandler):
- def handle(self):
- print "Client connected:", self.client_address
- self.request.sendall(self.request.recv(2**16))
- self.request.close()
- if len(sys.argv) != 2:
- print __doc__
- else:
- TCPServer(('', int(sys.argv[1])), EchoHandler).serve_forever()
2、客户端-echoclient.py
- #!/usr/bin/python
- "USAGE: echoclient.py <server> <word> <port>"
- from socket import *
- import sys
- if len(sys.argv) != 4:
- print __doc__
- sys.exit(0)
- sock = socket(AF_INET, SOCK_STREAM)
- sock.connect((sys.argv[1], int(sys.argv[3])))
- message = sys.argv[2]
- messlen, received = sock.send(message), 0
- if messlen != len(message):
- print "Failed to send complete message"
- print "Received: ",
- while received < messlen:
- data = sock.recv(32)
- sys.stdout.write(data)
- received += len(data)
- sock.close()
本文转载自:http://blog.csdn.net/caleng/article/details/5426862
0 0
- PYTHON模块之socket
- python socket模块
- Python socket模块编程
- python模块os,socket
- python socket模块
- python socket 模块
- python socket 模块
- Python socket 模块
- python中的socket模块
- python socket模块属性
- Python的Socket模块
- python中的socket模块
- python的socket模块
- Python的socket模块详解
- Python的socket模块详解
- Python网络编程socket模块
- Python的socket模块详解
- Python Socket模块中的IP转换函数
- android listview 单选功能
- 【POJ 1699】 Best Sequence(KMP+状压DP)
- trtvetvwrtv
- 使用脚本编写 Vim 编辑器,第 2 部分: 用户定义函数
- APP应用接入ApplePay
- Python socket 模块
- Android Parcelable和Serializable的区别
- ProcessOn -在线绘图
- 第26讲项目1——投票表决器
- Pig 基础及安装
- 单例设计模式
- Spark学习笔记(一)--Spark架构
- HDU3487 Play with Chain(Splay)
- TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)