网络编程

网络编程简单介绍与实例

最后都变了- 提交于 2019-12-06 08:04:10
网络相关概念: Socket 网络连接 计算机网络 所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备用通信线路相互连接成一个规模大,而且功能强的网络系统,从而使得计算机之间可以相互传递信息,共享数据、软件等资源。 按地理位置分为: 局域网 城域网 广域网,最大的是 Internet 网络编程 所谓网络编程,指的就是在同一个网络中不同机器之间的通信 计算机之间通信需要的条件 IP 地址 IP 地址指的是互联网地址 (Internet Protocol Address ,是联网设备与互联网之间的唯一标识,在同一个网段中, IP 地址是唯一的 IP 地址是数字型的,是一个 32 位的二进制,通常将其分成 4 个 8 位的二进制数,每 8 位之间用圆点隔开,每个 8 位整数可以转换为一个 0~255 的十进制整数,例如 :202.9.128.88 分为 IPV4 和 IPV6 查看 IP 地址的命令: ipconfig IP 地址分类 A 类:保留给政府结构, 1.0.0.1 ~ 126.255.255.254 B 类:分配给中型企业, 128.0.0.1 ~ 191.255.255.254 C 类:分配给任何需要的个人, 192.0.0.1 ~ 223.255.255.254 D 类:用于组播, 224.0.0.1 ~ 239.255.255.254 E 类:用于实验,

面视必备,史上最通俗计算机网络分层详解

人走茶凉 提交于 2019-12-06 06:44:25
1、引言 整个暑假去面试,面试了很多家公司(无论是小厂还是大厂)问到的深度不同,网络原理是面试最容易问到的问题,虽然我们在项目中很少去实践它,但是了解其原理,会让我们背后网络通信是如果工作的,既能在面试官面前体现出你的基础是否扎实,也能对以后深入网络这部分学习有更多的了解。 很多同学面试在准备这部分的时候,都会去背,这部分确实很难掌握,我个人总结的最好的学习网络原理的方法就是不用刻意的去记忆而是完全的结合实际去讲整个原理融会贯通。虽然一开始学习起来很吃力,但是稍微用点心,多看几遍,多问自己为什么,把自己当做是开发网络原理的开发者,面试前的准备只要理清逻辑就足够了,而不是去背这部分内容。 而且这部分相同的知识点面试官有多种提问方式,但是其中很多都是换汤不换药。我记得最多的问的是输入URL,到页面呈现出来,其中经历了什么?这道面试题的背后,涉及到了很多网络原理的知识,我们这篇文章不会全部分享到,而是先把由来和网络层次划分弄清楚,就完成了这篇文章的目的。 (本文同步发布于: http://www.52im.net/thread-2851-1-1.html ) 相关文章: 《 网络编程懒人入门(一):快速理解网络通信协议(上篇) 》(* 力荐) 《 网络编程懒人入门(二):快速理解网络通信协议(下篇) 》(* 力荐) 《 网络编程懒人入门(六):史上最通俗的集线器、交换机

day27_网络编程

依然范特西╮ 提交于 2019-12-06 05:31:58
day27 面向对象多继承 b. 经典类和新式类 py2: 经典类 新式类,如果自己或自己的前辈只要有人继承object,那么此类就是新式类。 py3:不管怎么写都是新式类 新式类 经典类和新式类的查找成员的顺序不一样。 经典类,一条道走到黑(深度优先)。 新式类,C3算法实现(python )。(广度优先) Foo + (C,D,F,G) + (G,D,G,W) + (I,G,D,G,W) Foo, I,B, 获取第一个表头 和 其他表位进行比较 不存在则拿走。 如果存在,则放弃,然后获取第二个表的表头再次和其他表的表尾进行比较。 简单: 经典类,一条道走到黑(深度优先)。 新式类,留个根(保留最后一个)。(科学C3算法); 注意事项: super是遵循__mro__执行顺序。 C3算法 class F(): pass print(F,__mro__) 可以查看继承顺序- 网络编程 a. 软件 客户端:CS架构, client -> server 浏览器:BS架构, browser -> server b. 如何实现相互通信。 需求一:编写两个软件,软件之间相互通信。 需求二:两个人直接连接 (网线) 需求三:教室相互通信(交换机) 使用IP地址:ipconfig/ifconfig s1:192.168.13.155 s2:192.168.13.25 三亚女朋友:192.168

8.Python网络编程_多线程死锁

▼魔方 西西 提交于 2019-12-06 05:09:40
死锁:指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。   此程序的两个线程会因为互相等待对方的互斥锁而陷入等待,最后由于主线程执行完毕而结束了各个子线程,从而程序结束。 1 import threading 2 import time 3 4 class MyThread1(threading.Thread): 5 def run(self): 6 #对mutexA上锁 7 mutexA.acquire() 8 9 #mutexA上锁,延时1秒,等待另外那个线程,把mutexB上锁 10 print(self.name+'----do1---up----') 11 time.sleep(1) 12 13 #此时会堵塞,因为这个mutexA已经被另外的线程抢先上锁了 14 mutexB.acquire() 15 print(self.name+'----do2---down----') 16 mutexB.release() 17 18 #对mutexA解锁 19 mutexA.release() 20 21 class MyThread2(threading.Thread): 22 def run(self): 23

5.Python网络编程_通过继承实现多线程

只谈情不闲聊 提交于 2019-12-06 04:43:24
1 import threading 2 import time 3 4 #继承形式的多线程,适合于程序比较复杂的情况 5 class MyThread(threading.Thread): 6 #t.start()会调用run函数,所以必须有个run方法 7 #线程类内的其他方法除非run函数内部调用他们,否则不会被调用 8 def run(self): 9 for i in range(3): 10 time.sleep(1) 11 msg="I'm "+self.name+' @ '+str(i) #name属性保存当前线程的名字 12 print(msg) 13 14 if __name__=='__main__': 15 t=MyThread() 16 t.start() #继承threading.Thread而来 17 18 来源: https://www.cnblogs.com/NiBosS/p/11962455.html

python-网络编程

断了今生、忘了曾经 提交于 2019-12-06 04:31:34
一:socket和套接字 1.1.什么是socket     socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 1. 2.套接字分类 这个世界上有很多种套接字( socket ),比如 DARPA Internet 地址(Internet 套接字)、本地节点的路径名(Unix套接字)、CCITT X.25地址(X.25 套接字)等。 1.3.Internet 套接分类   Internet 套接字分成两种类型:   流格式套接字(Stream Sockets)也叫“面向连接的套接字”,在代码中使用 SOCK_STREAM 表示。   数据报格式套接字(Datagram Sockets)也叫“无连接的套接字”,在代码中使用 SOCK_DGRAM 表示。 1.4.无连接套接字 数据报格式套接字(Datagram Sockets)也叫“无连接的套接字”,在代码中使用 SOCK_DGRAM 表示。 计算机只管传输数据,不作数据校验,如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救的。也就是说,数据错了就错了,无法重传。 因为数据报套接字所做的校验工作少,所以在传输效率方面比流格式套接字要高。 可以将

网络编程

我是研究僧i 提交于 2019-12-06 03:27:56
一·网络编程的两个主要问题   1.如何精准的定位网络上一台或多台主机,定位主机上的特定的应用   2.找到主机后如何可靠高效的进行数据的传输 二·网络编程的中的两个要素   1.对应问题一:IP和端口号   2.对应问题二:提供网络通信协议 三·通信要素一:IP和端口号 3.1:IP   1.IP:唯一的额标识Interet上的计算机(通信实体)   2.在Java中使用InetAddress类代表IP   3.IP分类:IPv4和IPv6;万维网和局域网   4.域名:www.baidu.com   5.本地回路地址:127.0.0.1或者localhost   6.如何实例花InetAddress:两个方法:getByName(String host)或getLocalHost()     两个的方法:getHostName() getHostAddress() public class Test{ public static void main(String[] args){ try{ InetAddress inet1 = InetAddress.getByName("192.168.1.14"); System.out.println(inet1);         InetAddress inet2 = InetAddress.getByName("www.baidu

网络编程课程回顾2

安稳与你 提交于 2019-12-06 02:11:26
TCP编码流程:    -----type=SOCK_STREAM   导入模块                      导入模块   实例化对象      套接字            实例化对象   绑定 IP+port(端口)   bind(元组)      监听         listen()   等待连接       accept()            连接服务器      connect/connect_ex(不抛异常,返回错误码)   收发         send/recv           收发   关闭         close             关闭 UDP编码流程:   -----type=SOCK_DGRAM   导入模块                      导入模块   实例化对象      套接字            实例化对象   绑定IP+port(端口)   bind()   收发         recvfrom/sendto        收发   关闭                        关闭 TCP和UDP区别   TCP面向连接,可靠,面向字节流行是,粘包,只允许一个服务器在同一时间和一个客户端相连接   UDP不面向连接,不可靠,快,面向数据包形式,不粘包,允许一个服务器同一时间和多个客户端相连接

Python 网络编程Ⅱ

我的未来我决定 提交于 2019-12-05 22:31:23
客户端 接下来我们写一个简单的客户端实例连接到以上创建http://www.weixiu3721.com/的服务。端口号为 12345。 socket.connect(hosname, port ) 方法打开一个 TCP 连接到主机为 hostname 端口为 port 的服务商。连接后我们就可以从服务端获取数据,记住,操作完成后需要关闭连接。 完整代码如下: 现在我们打开两个终端,第一个终端执行 server.py 文件: 第二个终端执行 client.py 文件: 这时我们再打开第一个终端,就会看到有以下信息输出: Python Internet 模块 以下列出了 Python 网络编程的一些重要模块: 来源: https://www.cnblogs.com/danjiu/p/11947705.html

读书笔记_python网络编程3_(1)

怎甘沉沦 提交于 2019-12-05 18:14:36
0.前言 代码目录: https://github.com/brandon-rhodes/fopnp/tree/m/py3 0.1.网络实验环境:理解客户端与服务器是如何通过网络进行通信的 每台机器通过一个Docker容器实现 0.1.1.调制解调器A和B下面的客户机(h1~h4)表示典型客户端场景,家庭或咖啡店(内部网络,不能访问互联网,如果要连互联网,都通过调制解调器IP进行连接) 0.1.2.调制解调器通过ISP网关连接广域网(主干路由器,负责将数据包发送至与之相连的网络) 0.1.3.example.com及相连机器表示机房配置。没有网络地址转换或伪装,互联网上的各个客户端可随意访问example.com后的三个服务器提供的服务端口 0.1.4.ftp、mail、www服务器运行正确配置的守护进程,Python脚本可以运行在其他机器,并成功连接到上述服务 0.1.5.所有服务器成功安装TLS证书,所有客户机有example.com的签名及安装受信证书,及要求TLS认证的Python脚本可以成功获取认证 0.1.6.可以在网络环境的任意一台机器上连接并运行命令,可对网络中的任意一个点进行数据包追踪,查看客户端和服务端之间的网络数据传输情况 1.客户端、服务器网络编程 1.1.协议栈与库 1.1.1.协议栈:复杂的网络服务建立在简单网络服务的基础上 1.1.2