python 14章,网络编程

一,socket 模块

套接字包括两类:服务器,客户机,

创建一个套接字后让它等待连接

服务器:

import socket
s = socket.socket()
port = 1234
host = socket.gethostname()
print host
s.bind((host,port))
s.listen(5)
while True:
    get,addr = s.accept()
    print ‘Got connection from‘,addr
    get.send(‘Thank you for connecting‘)
    get.close()

客户机:

import socket
s = socket.socket()
host = socket.gethostname()
port = 1234
s.connect((host,port))
print s.recv(1024)

>>>

Z5WRYRLDY59AL03

Got connection from (‘222.27.174.175‘, 53389)

Got connection from (‘222.27.174.175‘, 53398)

Got connection from (‘222.27.174.175‘, 53405)

Got connection from (‘222.27.174.175‘, 53407)

>>> ================================ RESTART ================================

>>>

Thank you for connecting

>>> ================================ RESTART ================================

>>>

Thank you for connecting

>>> ================================ RESTART ================================

>>>

Thank you for connecting

>>> ================================ RESTART ================================

>>>

Thank you for connecting

二,urllib,urllib2

可以通过 网络访问文件,借用URL简单下载用urllib 如果要用http验证或用cookie 用urllib2

1.打开远程文件

from urllib import urlopen

webpage = urlopen("http://www.baidu.com")

urlopen 方法:close,read,readline,readlines

2.获取远程文件

urlretrieve(‘http://www.python.org‘,‘c:\\python.html‘)

默认放在临时位置,用urlcleanup清理

三,SocketServer

SocketServer是许多服务器框架的基础如:BaseHTTPServer,SimpleHTTPServer,CGIHTTPServer

SocketSever包含4个基本类:1针对TCP套接字流的TCPServer,2.针对UDP数据报UDPServer 3.UnixStreamServer 4.UnixDatagramServer

服务器:

from SocketServer import TCPServer,StreamRequestHandler
import socket
class Handler(StreamRequestHandler):

    def handle(self):
        addr = self.request.getpeername()
        print ‘Got connection from‘,addr
        self.wfile.write(‘Thank you for connecting!!!‘)
host = socket.gethostname()
server = TCPServer((host,1234),Handler)
server.serve_forever()

>>>

Thank you for connecting!!!

>>>

Got connection from (‘222.27.174.175‘, 55479)

四,多连接

3种方法: 分叉(forking),线程(threading),异步IO(asynchronous I/O)

使用SocketServer进行分叉和线程处理

from SocketServer import TCPServer,ForkingMixIn,StreamRequestHandler
import socket
class Server(ForkingMixIn,TCPServer):pass

class Handler(StreamRequestHandler):

    def handle(self):
        addr = self.request.getpeername()
        print ‘Got connection from‘,addr
        self.wfile.write(‘Thank you for connecting ...‘)
host = socket.gethostname()
server = Server((‘‘,1234),Handler)
server.serve_forever()

使用select

import socket,select
s = socket.socket()
host = socket.gethostname()
port = 3306
print host
s.bind((host,port))

s.listen(5)
inputs = [s]
while True:
    rs,ws,es = select.select(inputs,[],[])
    for r in rs:
        if r is s:
            c,addr = s.accept()
            print ‘Got connection form‘,addr
            inputs.append(c)
        else:
            try:
                data = r.recv(1024)
                disconnected = not data
                if data:
                    r.send(‘yes!I can hear you!‘)
            except socket.error:
                disconnected = True

            if disconnected:
                print r.getpeername(),‘disconnected‘
                inputs.remove(r)
            else:
                print data

python 14章,网络编程

时间: 2024-12-23 07:34:05

python 14章,网络编程的相关文章

<<Python基础教程>>学习笔记 | 第14章 | 网络编程

Python是个很强大的网络编程工具,原因有二: 1. Python内有很多针对常见网络协议的库 2. Python在处理字节流方面的优势 本章主要内容: 探讨Python标准库中的一些网络模块,探讨SocketServer类,最后是Twisted框架. ------ 相关模块 Socket模块 基本组件,用于两个程序之间的信息通道.套接字包括两个: 服务器套接字和客户端套接字.创建一个服务器套接字后,让它等待连接,这样它就在某个网络地址处监听.客户端套接字负责:简单的连接,完成事务,断开连接.

第14章 网络编程

参考: https://blog.csdn.net/u014162133/article/details/46573873 原文地址:https://www.cnblogs.com/happykoukou/p/9336637.html

Python基础教程(第十四章 网络编程)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5538341.html______ Created on Marlowes 本章将会给读者展示一些例子,这些例子会使用多种Python的方法编写一个将网络(比如因特网)作为重要组成部分的程序.Python是一个很强大的网络编程工具,这么说有很多原因,首先,Python内有很多针对常见网络协议的库,在库顶部可以获得抽象层,这样就可以

python高级之网络编程

python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说到网络通信,那就不得不说TCP/IP协议簇的OSI七层模型了,这个东西当初在学校都学烂了...(PS:毕竟本人是网络工程专业出身...) 简单介绍下七层模型从底层到上层的顺序:物理层(定义物理设备的各项标准),数据链路层(mac地址等其他东西的封装),网络层(IP包头的的封装),传输层(TCP/UD

第13章 网络编程

1 /***************** 2 ***第13章 网络编程 3 *******知识点: 4 **************1.基本概念 5 ******************1.1 网络OSI模型 6 ******************1.2 IP地址 7 ******************1.3 端口地址 8 ******************1.4 通讯协议 9 **************2.Java网络相关类 10 ******************2.1 URLDe

Python四大主流网络编程框架

目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实.但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架:Django.Tornado.Flask.Twisted. 网络框架及MVC架构 所谓网络框架是指这样的一组Python包,它能够使开发者专注于网站应用业务逻辑的开发,而无须处理网络应用底层的协议.线程.进程等方面.这样能大大提高开发者的工作效率,同时提高网络应用程序的质量. 在目前Py

[CSAPP笔记][第十一章网络编程]

第十一章 网络编程 我们需要理解基本的客户端-服务端编程模型,以及如何编写使用因特网提供的服务的客户端-服务端程序. 最后,我们将把所有这些概念结合起来,开发一个小的但功能齐全的Web服务器,能够为真实的Web浏览器提供静态的和动态的文本和图形内容. 11.1 客户端 - 服务器编程模型 每个网络应用程序都是基于客户端 - 服务器模型的 采用这种模型,一个应用是由一个服务器进程 和一个或多个客户端进程组成. 服务器管理某种资源,并且通过操作这种资源为它的客户端提供某种服务. WEB服务器,代表客

第三章 网络编程

终于学到网络编程了! 先上图和程序: 这是今天写的TCP的实现 服务器和客户端分别在两台电脑 这是服务器图: 这是服务器程序: 1 #-*- coding:utf-8 -*- 2 from socket import * #导入socket所有属性 3 from time import ctime #导入ctime() 4 5 6 host = '' #HOST 变量为空,表示bind()函数可以绑定在所有有效的地址上. 7 port = 21000 #设置端口 8 bufsize = 1024

Python TCP通信网络编程

最近在看廖雪峰老师的基础教程(http://www.liaoxuefeng.com/),今天实现了一下简单Python的Socket的网络编程. 1. Socket网络编程 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 2. 客户端 大多数连接都是可靠的TCP连接.创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器.举个例子,当我们在浏览器中访问新浪时,我