Python的网络编程基础
2017-06-27 19:46
351 查看
1.socket模块
在网络编程中最基本的组件就是套接字(socket)
套接字包括:服务套接字,客户机套接字
服务器套接字创建后就监听是否有客户机套接字进行连接
客户机只需要给出相关协议参数并对服务器进行连接即可
服务器的简单的实现:
与<<Python基础编程>>中给出不同的是 send参数不能是字符串形式,而需要时bytes形式
在死循环中服务器套接字尝试进行连接,值得注意的是s.accept()这个函数如果连接成功会返回两个数据 一个新的套接字和客户端的地址
s.listen(5)代表最多接受5个连接
客户端的简单实现:
客户端代码非常简单,实验时先打开服务器程序再打开客户端程序即可
2.urllib和urllib模块
这个模块厉害了 直接可以获得网页数据
下面用百度网进行举例
因为使用的是Python3.6.1版本所以与书上所写有所不同
最终将会打印出百度网的脚本信息,使用pprint更加美观但是会花很多时间,可以换成print
3.SocketServer
SocketServer是众多服务器框架的基础
包含四个基本的类:
针对TCP流套接字的TCPServer;
针对UDP数据报套接字的UDPServer
针对性不强的UnixStreamServer和UnixDataqramServer
基本流程:
每当服务器收到一个来自客户端的连接请求,就会实例化一个请求处理程序,并且它的各种处理方法会在处理时被调用,具体调用那一个方法取决于服务器和使用的处理程序类
SocketServer中的其他类实现了对HTTP服务器的基本支持。
代码如下
其中''就表示了服务器正在其上运行的主机名
当客户端有连接请求,Handler类继承于StreamRequestHandler所以会被调用
handle函数在初始化函数中所以也会被调用,并进行连接等一系列操作
在网络编程中最基本的组件就是套接字(socket)
套接字包括:服务套接字,客户机套接字
服务器套接字创建后就监听是否有客户机套接字进行连接
客户机只需要给出相关协议参数并对服务器进行连接即可
服务器的简单的实现:
import socket s=socket.socket() host=socket.gethostname() port=1234 s.bind((host,port)) s.listen(5) while True: c,addr=s.accept() print(addr) print(c) print("Got connection from %s"%(str(addr))) c.send(bytes("Thank you for connecting",encoding='utf-8')) input("按下任意键退出") c.close()
与<<Python基础编程>>中给出不同的是 send参数不能是字符串形式,而需要时bytes形式
在死循环中服务器套接字尝试进行连接,值得注意的是s.accept()这个函数如果连接成功会返回两个数据 一个新的套接字和客户端的地址
s.listen(5)代表最多接受5个连接
客户端的简单实现:
import socket s=socket.socket() host=socket.gethostname() port=1234 s.connect((host,port)) print(s.recv(1024)) input("按下任意键退出")
客户端代码非常简单,实验时先打开服务器程序再打开客户端程序即可
2.urllib和urllib模块
这个模块厉害了 直接可以获得网页数据
下面用百度网进行举例
import urllib.request from pprint import pprint webpage=urllib.request.urlopen("http://www.baidu.com") date=webpage.read() date=date.decode("UTF-8") pprint(date)
因为使用的是Python3.6.1版本所以与书上所写有所不同
最终将会打印出百度网的脚本信息,使用pprint更加美观但是会花很多时间,可以换成print
3.SocketServer
SocketServer是众多服务器框架的基础
包含四个基本的类:
针对TCP流套接字的TCPServer;
针对UDP数据报套接字的UDPServer
针对性不强的UnixStreamServer和UnixDataqramServer
基本流程:
每当服务器收到一个来自客户端的连接请求,就会实例化一个请求处理程序,并且它的各种处理方法会在处理时被调用,具体调用那一个方法取决于服务器和使用的处理程序类
SocketServer中的其他类实现了对HTTP服务器的基本支持。
代码如下
from socketserver import TCPServer,StreamRequestHandler class Handler(StreamRequestHandler): def handle(self): addr=self.request.getpeername() print('Got connection from %s'%(str(addr))) self.wfile.write(bytes('Thank you for connecting',encoding='UTF-8')) server=TCPServer(('',1234),Handler) server.serve_forever()
其中''就表示了服务器正在其上运行的主机名
当客户端有连接请求,Handler类继承于StreamRequestHandler所以会被调用
handle函数在初始化函数中所以也会被调用,并进行连接等一系列操作
相关文章推荐
- python 网络编程基础1
- [Python网络编程基础]第18章 CGI
- 从零开始学Python第八周:详解网络编程基础(socket)
- python网络基础编程笔记(一)
- python基础(七)——网络编程
- python 网络编程基础
- python 网络编程基础
- python网络编程基础-卷1-(1,8)章
- python 网络编程基础(一)
- python网络编程基础
- Python基础教程——14 网络编程
- Python网络编程基础笔记-poll实现非阻塞socket
- python基础教程_学习笔记24:网络编程、Python和万维网
- Python3 网络编程1--基础知识了解
- Python网络编程基础
- python 网络编程基础 笔记
- <<Python基础教程>>学习笔记 | 第14章 | 网络编程
- Python编程基础之十五网络编程
- python基础学习-socket网络编程
- 神经网络基础 - Python编程实现标准BP算法