Python 网络编程

Python提供两个基本的Socket模块:

Socket,提供了标准的BSD Sockets API

SocketServer, 提供了服务器中心类,可以简化网络服务器的开发

1、Socket类型

套接字格式为: socket(family, type[,protocall]),使用给定的地址族、套接字类型、协议类型(默认为0)创建套接字。

2、Socket函数

TCP编程

服务端

创建Socket,绑定Socket到本地IP和端口

开始监听连接

进入循环,不断接收客户端的连接请求

接收传来的数据,并发送给对方数据、

传输完毕后,关闭Socket

# coding=utf8

"""

1. 创建Socket,绑定Socket到本地IP和端口

2. 开始监听连接

3. 进入循环,不断接收客户端的连接请求

4. 接收传来的数据,并发送给对方数据

5. 传输完毕后,关闭Socket

"""

import socket

import threading

import time

def dealClient(sock, addr):

# 4. 接收传来的数据,并发送给对方数据

print 'Accept new connection from %s:%s...' % addr

sock.send(b'Hello, I am server!')

while True:

data = sock.recv(1024)

time.sleep(1)

if not data or data.decode('utf-8') == 'exit':

break

print '-->>%s!' % data.decode('utf-8')

sock.send('Loop_Msg: %s!' % data.decode('utf-8').encode('utf-8'))

# 5. 传输完毕后,关闭Socket

sock.close()

print 'Connection from %s:%s closed.' % addr

if __name__ == '__main__':

# 1. 创建Socket,绑定Socket到本地IP和端口

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind(('127.0.0.1',9999))

# 2. 开始监听连接

s.listen(5) # listen(n)传入的值, n表示的是服务器拒绝(超过限制数量的)连接之前,操作系统可以挂起的最大连接数量。n也可以看作是"排队的数量"

print 'Waiting for connection...'

# 3. 进入循环,不断接收客户端的连接请求

while True:

sock, addr = s.accept()

t = threading.Thread(target=dealClient, args=(sock, addr))

t.start()

客户端

创建Socket,连接远端地址

连接后发送数据和接收数据

传输完毕后,关闭Socket

# coding=utf8

"""

1. 创建Socket,连接远端地址

2. 连接后发送数据和接收数据

3. 传输完毕后,关闭Socket

"""

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(('127.0.0.1', 9999))

print '-->>'+s.recv(1024).decode('utf-8')

s.send(b'Hello I am a client')

print '-->>'+s.recv(1024).decode('utf-8')

s.send(b'exit')

s.close()

UDP 编程

服务端

创建Socket,绑定指定的IP和端口

直接发送数据和接收数据

关闭Socket

# coding=utf8

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.bind(('127.0.0.1',9999))

print 'Bind UDP on 9999...'

while True:

data, addr = s.recvfrom(1024)

print 'Received from %s:%s' % addr

s.sendto(b'Hello, %s!' % data, addr)

客户端

与TCP不同,UDP客户端不需要建立连接,创建Socket后可以直接后服务端进行数据交换

# coding=utf8

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

for data in [b'Hello',b'World']:

s.sendto(data,('127.0.0.1',9999))

print s.recv(1024).decode('utf-8')

s.close()

python网络编程爬虫_Python爬虫--网络编程相关推荐

  1. python网络编程实战_Python 异步网络编程实战

    近年来 Python 的发展的非常迅速,"简单"."高效"是 Python 吸引人的一大特色.在国内 Python 开发需求越来越大,Python 具有丰富强大 ...

  2. hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫

    今天主要跟大家谈谈爬虫,尤其是刚入门的伙伴,少走弯路!文末附全套的视频版Python学习教程,含爬虫教程!希望大家能够把文字部分看完!做一个梳理! 在学习爬虫之前我们需要明白的一个问题: 爬虫能做什么 ...

  3. python b站 排行_Python爬虫抓取B站小视频排行榜,新手也可以跟着做哦!

    Python爬虫学到什么程度就可以去找工作了? 有朋友在群里和大家讨论,问的最多的问题就是,python 爬虫学到什么程度可以去找工作了,关于这点,和大家分享下我的理解. 看大牛用Python实现发送 ...

  4. python读取手机文件_python 读取 网络 文件

    Python之pandas数据加载.存储 Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 ...

  5. python并发编程方法_Python Futures并发编程详解

    无论哪门编程语言,并发编程都是一项很常用很重要的技巧.例如,爬虫就被广泛应用在工业界的各个领域,我们每天在各个网站.各个 App 上获取的新闻信息,很大一部分便是通过并发编程版的爬虫获得. 正确合理地 ...

  6. python窗口显示表格_Python爬虫之GUI图表

    关于Python爬虫系列的这篇文章我很早就想写了,但由于我前两周一直在研究vscode插件开发方面,就没去写文章.所幸目前vscode插件开发的知识了解的差不多了,是时候写了,哈哈.需要说明的是,我并 ...

  7. python从入门到爬虫_python爬虫从入门到放弃(一)之初识爬虫

    什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引. ...

  8. python获取网站代码_python爬虫1——获取网站源代码(豆瓣图书top250信息)

    # -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...

  9. python在线爬虫_Python爬虫偷懒神器!快速一键生成Python爬虫请求头

    今天介绍个神奇的网站!堪称爬虫偷懒的神器! 我们在写爬虫,构建网络请求的时候,不可避免地要添加请求头( headers ),以 mdn 学习区为例,我们的请求头是这样的: 一般来说,我们只要添加 us ...

  10. python如何解析网页_Python爬虫入门第一课:如何解析网页

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于肥宅与画家 ,作者AntzUhl 我们编写网络爬虫最主要的目 ...

最新文章

  1. 红帽系列linux自行配置本地yum源
  2. centos7 mysql安装配置_mysql 5.7.17 安装配置方法图文教程(CentOS7)
  3. python拷贝文件函数_Python Set集合,函数,深入拷贝,浅入拷贝,文件处理
  4. 前端打印第三方插件_vscode mock服务插件amock教程
  5. web服务器文档根目录在哪里,web服务器根目录在哪
  6. matlab aviobj,MATLAB AVI 视频读取处理
  7. 领域驱动设计(DDD)前夜:面向对象思想
  8. Linux运行8086代码,* linux下编译,链接,运行,汇编程序
  9. JAVA导出404_从ActiveReports 8导出Excel时出错404
  10. java导入excel数据到mysql_java的poi技术读取Excel数据到MySQL
  11. (进阶)LeetCode(206)——反转链表(JavaScript)
  12. 电力企业计量生产需求系统解决方案
  13. Recompile/upgrade nginx binary with no down-time
  14. 【排序算法】堆排序——常规方法
  15. 【人脸识别】基于matlab GUI PCA人脸二维码识别(带面板)【含Matlab源码 754期】
  16. java打印出日历_java控制台打印本月的日历
  17. fanuc系统md和mf区别_fanuc mf系统小技巧汇总
  18. Newton tangent method
  19. vue报错Navigating to current location (/login) is not allowed
  20. python与spider的区别_python – Scraw spider与Scraped items之间的区别

热门文章

  1. go uintptr unsafe Pointer offset() 的使用
  2. 想成为BAT中的一员,你总要去学点什么(一)
  3. Spark _19 _Spark内存管理
  4. java基础----IO序列化Serializable
  5. leetcode 572. 另一个树的子树(Java版)
  6. leetcode 101. 对称二叉树 递归解法
  7. dart系列之:dart语言中的内置类型
  8. 快乐学算法之:字典树Trie
  9. Spring Boot 之Spring data JPA简介
  10. 遇到的坑_新手搭建web自动化遇到的坑...