python基础学习笔记——Python基础教程(第2版 修订版)第14章(网络编程)

时间:2022-06-08 18:40:41

#socket模块

#套接字  “信息通道”
#服务器套接字 客户端套接字
#实例化三个参数 地址族(默认socket.AF_INET) 流(socket.SOCK_STREAM) 协议(
0)
#服务器端使用bind 再调用listen监听地址
#客户端connect
#aa套接字 send recy

#服务器
import socket
s
=socket.socket()
host
=socket.gethostname()
port
=1234
s.bind((host,port))

s.listen(
5)
while True:
c.addr
=s.accept()
print(
"Got connection from ",addr)
c.send(
"thank you for connecting")
c.close()

#客户机
import socket
s
=socket.socket()
host
=socket.gethostname()
port
=1234
s.connect((host,port))
print s.recv(
1234)

#urllib和urllib2模块  通过网络访问文件

#打开远程文件
from urllib import urlopen
web
=urlopen("http://www.python.org")

#提取python页中(“About”连接URL,使用正则
import re
text
=webpage.read()
m
=re.search('<a href="([^"]+)".*?>about</a>'.text.re.IGNORECASE)
m.group(
1)

#获取远程文件
urlretrieve("http://www.python.org","c:\\python_webpage.html")

#SocketServer和他的朋友们

#服务器框架的基础
BaseHTTPServer
SimpleHTTPServer
CGIHTTPServer
SimpleXMLRPCServer
DocXMLRPCServer

#实例
from SocketServer import TCPServer,StreamRequestHandler
class Handler(StreamRequestHandler)
def handle(self):
addr
=self.request.getpeername()
print ("Got connection from addr
self.wfile.write("than you ")

server
=TCOServer(("",1234)Handler)
server.serve_forver()

#多连接

#分叉(Windows不支持) 线程 异步
#
线程处理服务器
from SocketServer import TCPServer,ThreadingMixIN,StreamRequestHandler
class Server(ThreadingMixIn.TCPServer):pass
class Handler(StreamRequestHandler)
def handle(self):
addr
=self.request.getpeername()
print ("Got connection from addr
self.wfile.write("than you ")

server
=TCOServer(("",1234)Handler)
server.serve_forver()
#d带有select和poll的一部I/O  pollwindows不可u用
#
select 需要三个序列为必选参数 秒为单位超时间做第四个可选参数
#
输入输出异常情况 没有给定超市时间 会阻塞(等待状态)
importsocket,select
s
=socket.socket()
host
=socket.gethostname()
port1234
s.bind((host,port))

s.listen(
5)
input[s]
while True:
rs,ws es
=select.select(inputs,[],[])
for f in rs:
if r is s:
c.addr
=s.accept()
print("Got connection from",addr)
inputs.append(c)
else:
try:
data
=r.recv(1024)
disconnected
=not data
except socket.error:
disconnected
=True

if dissconnected:
print r.getpeername()."disconnected"
inputs.reme(r)
else:
print data

 

#Twised

python setup.pyinstall