zoukankan      html  css  js  c++  java
  • 网络基础、多线程、ftp任务铺垫

    一、网络基础

    学习网络编程,了解一些网络基础的知识是必不可少的,下面学习一些基础的网络知识:

    1、我们的电脑里有网卡,网卡里有mac地址;

    2、我到某个地方插上网线,路由器或交换机中的DHCP服务为我自动分配IP地址。

      IP: 192.168.13.84

                  IPv4

                         00000000.00000000.00000000.00000000

                         0~255    0~255    0~255    0~255

                  IPv6

                         00000000.00000000.00000000.00000000.00000000.00000000

           子网掩码:255.255.255.0

           网关IP:192.168.13.1

           局域网内、城域网、广域网:

                  广播

                  单播

                  广播风暴

                  arp协议

    3、DNS

    网络连接:

                  - 域名解析

                         www.baidu.com  220.181.57.216

                  - 连接

                         sk = socket.socket()

                         sk.connect(('47.95.64.113',80))

                                       ...

           问题来了,域名和IP的对应关系在哪里?

                  本地:

                         Win本地电脑:

                                C:WindowsSystem32driversetchosts

                                11.22.33.44 www.baidu.com

                         Linux/Mac电脑:

                                /etc/hosts

                               

                  DNS服务器:全球顶级DNS服务器13台

                         www.luffycity.com  47.95.64.113

                                      

           创业:  a. 租一个服务器+公网IP

                         b. 租域名

                                域名+IP解析

    总结:

      1. DHCP,自动位局域网内容电脑分配IP。

           2. 网关,路由器中连接交换机的口。

           3. IP,4个点分的十进制表示  192.11.111.11

           4. 子网掩码,

                  IP: 192.168.13.99

                  掩码:255.255.255.0

                         将挡住的IP位数作为网段。

                         未挡住的部分作为可变的值。

           5. 局域网/城域网/广域网

           6. arp协议

           7. DNS

    二、多线程

           线程,英文是Thread,每个正在系统上运行的程度都是一个进程。每个进程包含一到多个线程。线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。下面就是一个多线程的示例:

      import time
      import threading
    
      def task(a1,a2,a3):
          time.sleep(2)
          print('去拿快递')
    
      def work():
          print('去写作业')
    
      def wm():
          print('去拿外卖')
    
      # 创建一个线程  让该线程去执行任务:函数
      t1 = threading.Thread(target=task,args=(1,2,3,))
      t1.start()  # 去执行吧
    
      # 创建一个线程  让该线程去执行任务:函数
      t2 = threading.Thread(target=work)
      t2.start()  # 去执行吧
    
      # 创建一个线程  让该线程去执行任务:函数
      t3 = threading.Thread(target=wm)
      t3.start()  # 去执行吧
    
      print('玩扇子')
      print('煽风点火')
      print('耍贱...')
      # 分析:该程序创建了三个线程,分别去执行不同的任务(函数),主线程可以继续向下走。
    

     再看下面socket和线程配合的示例: 

      import time
      import socket
      import threading
    
      def task(conn):
          time.sleep(2)
          data = conn.recv(1024)
          print(data)
          conn.close()
    
      server = socket.socket()
      server.bind(('127.0.0.1',8001,))
      server.listen(5)
    
      while True:
          conn,addr = server.accept()
          t = threading.Thread(target=task,args=(conn,))
          t.start()
    

      

  • 相关阅读:
    【LeetCode】17. Letter Combinations of a Phone Number
    【LeetCode】16. 3Sum Closest
    【LeetCode】15. 3Sum 三个数和为0
    【LeetCode】14. Longest Common Prefix 最长前缀子串
    【LeetCode】13. Roman to Integer 罗马数字转整数
    【LeetCode】12. Integer to Roman 整型数转罗马数
    【LeetCode】11. Container With Most Water
    【LeetCode】10. Regular Expression Matching
    Models of good programmer
    RSA Algorithm
  • 原文地址:https://www.cnblogs.com/xihuanniya/p/9837272.html
Copyright © 2011-2022 走看看