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()
    

      

  • 相关阅读:
    马士兵_聊天系统_知识储备库
    最近一些情况
    JAVA坦克大战项目练习日4
    JAVA坦克大战项目练习日3
    JAVA坦克大战项目练习日2
    JAVA坦克大战项目练习日1
    课后实战String的一些细节
    Java从入门到精通之数组篇
    58_自定义标签打包以及使用自定义标签教程
    javaWeb安全篇(1)——防盗链技术的实现
  • 原文地址:https://www.cnblogs.com/xihuanniya/p/9837272.html
Copyright © 2011-2022 走看看