发布时间 : 星期日 文章Python Django 学习笔记 socket运用(五)更新完毕开始阅读e1f8b4d95022aaea998f0f48
Python Django 学习笔记 socket运用(五)
学习内容:http://www.cnblogs.com/jeriffe/category/207783.html
Python socket模块:
Python 提供了两个基本的 socket 模块 类/模块 Socket SocketServer 说明 低层网络接口(每个 BSD API) 提供简化网络服务器开发的类 Socket 模块
表 2. Socket 模块的类方法 类方法 说明 Socket 低层网络接口(每个 BSD API)
socket.socket(family, type) 创建并返回一个新的 socket 对象
socket.getfqdn(name) 将使用点号分隔的 IP 地址字符串转换成一个完整的域名 socket.gethostbyname(hostname) 将主机名解析为一个使用点号分隔的 IP 地址字符串 socket.fromfd(fd, family, type) 从现有的文件描述符创建一个 socket 对象
表 3. Socket 模块的实例方法 实例方法 说明
sock.bind( (adrs, port) ) 将 socket 绑定到一个地址和端口上 sock.accept() 返回一个客户机 socket(带有客户机端的地址信息)
sock.listen(backlog) 将 socket 设置成监听模式,能够监听 backlog 外来的连接请求 socket.listen( 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() 关闭 socket
sock.getsockopt( lvl, optname ) 获得指定 socket 选项的值 sock.setsockopt( lvl, optname, val ) 设置指定 socket 选项的值
注:类方法 和 实例方法 之间的区别在于,实例方法需要有一个 socket 实例(从 socket 返回)才能执行,而类方法则不需要。
SocketServer和Socket调用: tcp_socketServer.py
#!/usr/bin/python #encoding=utf-8 from SocketServer import TCPServer, StreamRequestHandler class MyHandler(StreamRequestHandler): def handle(self): #重载处理方法 addr = self.request.getpeername() #获取连接对端地址 print 'Get connection from', addr self.wfile.write('This is a tcp socket server') #发送数据 host = '' port = 1234 server = TCPServer((host, port), MyHandler) #生成TCP服务器 server.serve_forever() #开始监听并处理连接 simple_socketclient.py
#!/usr/bin/python #encoding=utf-8 import socket s = socket.socket() #生成一个socket对象 server = socket.gethostname() port = 1234 s.connect((server, port)) #连接服务器 print s.recv(1024) #读取数据 s.close() #关闭连接 先运行tcp_socketServer.py,开始监听
运行simple_socketclient.py 读取数据
显示连接信息
回显流服务器 服务器端server.py
import socket srvsock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) srvsock.bind( ('', 23000) ) srvsock.listen( 5 ) while 1: clisock, (remhost, remport) = srvsock.accept() str = clisock.recv(100) clisock.send(\clisock.close() 客户端client.py
import socket clisock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) server = socket.gethostname() clisock.connect( (server, 23000) ) clisock.send(\print clisock.recv(100) clisock.close() Python数据库配置
下面进行数据库连接及查询功能运用,点击IDLE(Python GUI),运行下面命令
>>> import cx_Oracle >>> db= cx_Oracle.connect('username', 'pwssword', 'ip_address:1521/db_name') >>> cursor=db.cursor() >>> sql='select city_id,city_name from cfg_city' >>> cursor.execute(sql) <__builtin__.OracleCursor on