网络基础、多线程、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()

  

原文地址:https://www.cnblogs.com/xihuanniya/p/9837272.html