Python Django 学习笔记 socket运用(五)

发布时间 : 星期一 文章Python Django 学习笔记 socket运用(五)更新完毕开始阅读

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 > >>> citys=cursor.fetchone() >>> cursor.close() >>> citys (20, '\\xb9\\xe3\\xd6\\xdd') >>>

联系合同范文客服:xxxxx#qq.com(#替换为@)