python之路-day26 初探网络编程

时间:2022-12-15 15:04:57

 

 

一、C\S 架构  client server

  软件c\s架构:客户端\服务端架构:京东,淘宝,今日头条,qq,微信

      B\S架构:浏览器(browser)\服务端>>>统一接口

  硬件C\S架构:打印机

 

二、网络通信整个流程

  网线:传输电信号

  集线器:将所有连接到集线器的网络设备联通起来

  交换机:升级版的集线器

  网卡:接收电信号

  MAC地址:即物理地址,8C-EC-4B-88-B9-X9  # 前三位厂商编号,后三位生产流水号 

  单播:单台pc向交换机发送消息(包含目标ip)

  广播:交换机将消息广播,对应目的ip的pc接收消息,其他pc丢弃消息 

  广播风暴:网络拥堵,信息不安全

  ip 地址:

    ipv4  地址:192.168.15.46   # 4个点分十进制数字

    作用,划分广播域,一个网段理论上可以划分256个地址,0-255

  DHCP:自动分配ip地址

  Arp表:保存着ip地址和mac地址对应关系

  Arp协议:通过ip地址获取mac地址

  子网掩码:用于计算两个ip是否是属于同一网段:

    255.255.255.0

      源ip地址:192.168.15.46

          11000000.10101000.00001111.00101110

          11111111.11111111.11111111.00000000

          11000000.10101000.00001111.00000000 #192.168.15.0

          目标的ip:192.168.16.30  # 192.168.16.0

  路由器:转发消息

  路由协议:计算路由转发消息的最优路径

  

  端口号:0-65535,确定电脑上的应用程序

  ip地址+端口 = 确定某个电脑上的某个应用程序

 

 

 三、初识socket

 1 import socket
 2 #创建一个socket对象
 3 server = socket.socket()  #相当于创建了一部电话
 4 ip_port = ('192.168.111.1',8001) #创建一个电话卡
 5 server.bind(ip_port) #插上电话卡
 6 server.listen(5) #监听着电话,我能监听5个,接到一个电话之后,后面还能有四个人给我打电话,但是后面这四个人都要排队等着,等着我第一个电话挂掉,再来第6个的时候,第六个人的手机会报错
 7 print('11111')
 8 #等着别人给我打电话,打来电话的时候,我就拿到了和对方的这个连线通道conn和对方的电话号码addr
 9 conn,addr = server.accept()  #阻塞住,一直等到有人连接我,连接之后得到一个元祖,里面是连线通道conn和对方的地址(ip+端口)
10 print('22222')
11 print(conn)
12 print('>>>>>>>>>',addr)
13 while True:
14     from_client_data = conn.recv(1024) #服务端必须通过两者之间的连接通道来收消息
15     from_client_data = from_client_data.decode('utf-8')
16     print(from_client_data)
17     if from_client_data == 'bye':
18         break
19     server_input = input('明威说>>>>:')
20     conn.send(server_input.encode('utf-8'))
21     if server_input == 'bye':
22         break
23 conn.close() #挂电话
24 server.close() #关手机
 1 import socket
 2 #创建一个socket对象
 3 server = socket.socket()  #相当于创建了一部电话
 4 ip_port = ('192.168.111.1',8001) #创建一个电话卡
 5 server.bind(ip_port) #插上电话卡
 6 server.listen(5) #监听着电话,我能监听5个,接到一个电话之后,后面还能有四个人给我打电话,但是后面这四个人都要排队等着,等着我第一个电话挂掉,再来第6个的时候,第六个人的手机会报错
 7 print('11111')
 8 #等着别人给我打电话,打来电话的时候,我就拿到了和对方的这个连线通道conn和对方的电话号码addr
 9 conn,addr = server.accept()  #阻塞住,一直等到有人连接我,连接之后得到一个元祖,里面是连线通道conn和对方的地址(ip+端口)
10 print('22222')
11 print(conn)
12 print('>>>>>>>>>',addr)
13 while True:
14     from_client_data = conn.recv(1024) #服务端必须通过两者之间的连接通道来收消息
15     from_client_data = from_client_data.decode('utf-8')
16     print(from_client_data)
17     if from_client_data == 'bye':
18         break
19     server_input = input('明威说>>>>:')
20     conn.send(server_input.encode('utf-8'))
21     if server_input == 'bye':
22         break
23 conn.close() #挂电话
24 server.close() #关手机

注意:先运行server,然后再运行client,然后你会发现client这个文件再输出台的地方让你输入内容,你输入一个内容然后回车,你会发现server那边的控制台就输出了以client发送的内容