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

#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

 

posted @ 2017-09-06 09:27  不可叽叽歪歪  阅读(99)  评论(0编辑  收藏  举报