网络编程

11 python学习笔记-网络编程

夙愿已清 提交于 2019-12-04 01:30:35
  python操作网络,即打开一个网站,或者请求一个http接口,可以通过使用python自带的标准模块urllib或第三方库requests实现 一、使用urllib模块操作网络   urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块。使用urlib模块发送请求实例如下: 1 from urllib import request 2 from urllib import parse 3 import json 4 5 #1、发送get请求 6 url = 'http://api.xxxx.cn/api/user/stu_info' 7 data = {'stu_name':'xiaohei'} 8 tmpData = parse.urlencode(data) #将数据格式变成Kv k=v 9 tmpUrl=url +'?'+tmpData #将接口url和参数拼接 10 res = request.urlopen(tmpUrl) #请求接口 11 resForRead=res.read() #通过read方法获取返回值结果,返回值结果是bytes 12 print(type(resForRead)) 13 resForString= resForRead

Python-网络编程

时光总嘲笑我的痴心妄想 提交于 2019-12-03 21:07:25
一、使用python自带模块urllib 模拟页面请求服务端,python提供了一个urllib模块,作用是通过python代码调用接口进行参数传递并获取到接口的返回值信息 urllib模式是一个标准模块,直接import urllib即可 1、发送get请求 from urllib import request from urllib import parse import json #get请求 # url='http://www.nzhp.cn/api/user/stu_info' # # data={'stu_name':'xiaohei'} #传递参数 # # tmpData=parse.urlencode(data) #将数据变成kv形式,即k=v # #接口+参数 # tmpUrl=url+'?'+tmpData # 将接口和参数拼接 # res=request.urlopen(tmpUrl) #请求接口 # resForRead=res.read() #通过read方法获取返回值结果,返回值结果是二进制bytes的类型 # resForString=resForRead.decode() #通过decode将bytes 转换成str类型,反过来是用encode # resForDict=json.loads(resForString)

【转载】对网络编程框架的理解

十年热恋 提交于 2019-12-03 20:13:24
对网络编程框架的理解 11 Apr 2018 网络框架是分布式系统中不可或缺的组件,我认为评价一个框架的好坏需要从性能和是否方便使用两方面考虑,在这总结下在参与pika、zeppelin、zeppelin-s3-gateway期间使用pink[1],调研优化pink,以及开发新网络框架Procyon[2]产生的一些关于网络框架的想法。 所谓框架应该就是提供了大部分代码,用户只需填充规定的部分代码即可,不用从头接触各种系统调用,所以网络框架一般情况下指的就是对TCP协议的socket各种封装,随着计算机处理能力的增强,以及应用规模的增大,程序员需要更好的利用硬件和操作系统提供的各种资源,所以随之出现了各种处理网络链接的模型,多线程,event loop等等,网络编程框架也就是对一种模型的实现,对于不同应用一般是通用的,方便了项目开发。 Eventbased Concurrency [3] 关于对一个客户端链接的处理很容易想到的一个办法就是每个链接建一个进程(后来改进为用线程)处理,这也是当时学操作系统时介绍的进程的一个作用(在FTP服务中,父进程接收新链接,然后建立子进程向客户端回复数据)。但是这种方法的缺点就是为不同客户端服务时会带来进程/线程切换的开销,从而无法服务太多的客户端。 这时出现了event-base的方法,在一个event loop中监听所有链接event

网络编程

浪子不回头ぞ 提交于 2019-12-03 17:25:06
IP 地址: 用来标记网络中的一台计算机,即通信实体的地址 网络号+主机号 A-E五类地址,常用C类 目前主流的IP地址是IPV4,IPV6 IP地址实际上是一个32位的整数,以字符串表示的IP地址实际上是把32位整数按8位分组后的数字表示 127.0.0.1 本机地址 192.168.0.0端口: 端口是虚拟的概念,端口表示一个16位的二进制整数0-65535协议: 计算机网络实现通信必须要有的约定即通信协议 网络协议的基本框架OSI框架,OSI模型 七层模型 : 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 上层可以调用下层 TCP/IP协议族 多个协议 四层模型 应用层 (应用层+表示层+会话层) 传输层 TCP/UDP 互联网络层 IP 网络接口层 (物理层+数据链路层)TCP/UDP Socket 编程接口 Socket 分为TCP编程和UDP编程两类 TCP 面向连接 传输数据安全 稳定 效率相对较低 UDP 面向无连接 传输数据不安全 效率较高socket() socket.socket([family[,type[,proto]]]) family 套接字家族 可以使用AF_UNIX AF_INET AF_UNIX 只能够用于单一的Unix系统进程之间的通信 AF_INET 服务器之间的网络通信 套接字家族按照面向连接还是无连接可以分为SOCK

网络编程~~~~socketserver服务端

会有一股神秘感。 提交于 2019-12-03 15:24:44
socketserver服务端 import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): while 1: from_client_msg = self.request.recv(1024) print(from_client_msg.decode('utf-8')) to_client_msg = input('>>>').encode('utf-8') self.request.send(to_client_msg) if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('127.0.0.1',8848),MyServer) server.serve_forever() 来源: https://www.cnblogs.com/lav3nder/p/11802160.html

网络编程~~~osi五层协议

落花浮王杯 提交于 2019-12-03 15:24:05
物理层 / 数据链路层 / 网络层 / 传输层 / 应用层(表示层/会话层) 一 物理层 物理层指的就是网线,光纤, 双绞线等物理传输介质 物理层发送的是数据(比特流) 二 数据链路层 数据链路层对数据进行分组 以太网协议:对数据进行合理的分组 一组数据构成一个数据报,又叫一帧 每一个数据报分为: 报头head和数据data两部分 head包含: 源地址(6个字节) 目标地址(6个字节) 数据类型(6个字节) data包含: 数据报的具体内容(最短46字节,最长1500字节) mac地址: 计算机网卡上标注的地址,12位16进制数组成(前六位是厂商编号,后六位是流水线号) 计算机的通信方式: 同一个局域网内,通过广播的形式通信. 消息一经广播发出,局域网所有的计算机都能接收到消息,分析消息,是否是找我的,不是就丢弃 计算机只能在局域网内进行广播: 范围大了就会造成广播风暴,效率极低 交换机的mac地址自主学习功能: 同一局域网内: 第一次发送数据, 需要广播的形式,获取对方的mac地址,将mac地址与网口写入交换机的对照表; 第二次发送数据(计算机与网口没更换),单播发送,直接从mac对照表寻找对方的地址 三 网络层 3.1 IP协议 IP协议: 确定局域网(子网)的位置. IP字段: 四分段十进制 192.168.0.12 取值范围:0~255.0~255.0~255.0~255

网络编程~~~ socket(套字节)

馋奶兔 提交于 2019-12-03 15:23:49
一 socket (套接字) socket处于应用层与传输层之间,提供了一些简单的接口,避免与操作系统之间的对接,省去了相当繁琐复杂的操作. socket在python中属于一个模块,通过调用模块中已经实现的方法建立两个进程之间的连接和通信。 1.1 基于TCP协议的socket通信 服务器端: import socket phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) phone.bind(('127.0.0.1',8848)) phone.listen() print('开机') while 1: conn,addr = phone.accept() while 1: try: from_client_data = conn.recv(1024).decode("utf-8") if from_client_data.upper() == "Q": print('客户端已正常断开连接') break else: print(f'来自客户端的消息:{from_client_data}') while 1: to_client_data = input('>>>') if not to_client_data: print('内容不能为空!') continue else: conn.send(to_client

Java 网络编程

风格不统一 提交于 2019-12-03 12:18:43
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。 java.net 包中提供了两种常见的网络协议的支持: TCP :TCP 是传输控制协议的缩写,它保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。 UDP :UDP 是用户数据报协议的缩写,一个无连接的协议。提供了应用程序之间要发送的数据的数据包。 本教程主要讲解以下两个主题。 Socket 编程 :这是使用最广泛的网络概念,它已被解释地非常详细。 URL 处理 :这部分会在另外的篇幅里讲,点击这里更详细地了解在 Java 语言中的 URL 处理。 Socket 编程 套接字使用TCP提供了两台计算机之间的通信机制。 客户端程序创建一个套接字,并尝试连接服务器的套接字。 当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行通信。 java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制。 以下步骤在两台计算机之间使用套接字建立TCP连接时会出现:

网络编程

谁都会走 提交于 2019-12-03 12:02:32
网络编程 1、软件开发架构 2、osi七层模型 3、socket模块及基于tcp协议简单编程 4、粘包问题及struct模块 5、subprocess模块 6、基于udp协议简单编程 7、socketserver模块实现并发 来源: https://www.cnblogs.com/WM2019/p/11795376.html

python网络编程

人盡茶涼 提交于 2019-12-03 10:59:34
python操作网络使用urilib模块和requests模块 一、urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块。 来源: https://www.cnblogs.com/zxj-blog/p/11792275.html