多任务编程--进程和线程day2

网络

  • 概念:实现数据通信的虚拟平台。

  • 学习的目的:方便我们后期开发出来的任务模型拿到的结果和web开发人员进行对接。

  • IP地址:用于唯一识别网络中的某台设备的描述,IPV4和IPV6

  • 查看机器的IP地址:

    Linux系统:ifconfig
    windows系统:ipconfig
    
    检查网络连通状况:ping 公网网址(某一台机器的IP地址)
    
  • 端口:网络中不同机器上的不同的程序完成数据通信是数据传输的通道

  • 端口号:通过端口号可以唯一识别一台机器上的某个程序,一共有2**16个

    • 分为知名端口和动态端口
      • 知名端口:0-1023
      • 动态端口:1024-65535
  • socket:

    • 是一款用于实现网络通信的工具,又称套接字。
  • TCP协议

    • 概念:传输控制协议,是一种面向连接的、可靠的、基于字节流的数据传输协议。
    • 特性
      • 面向连接
      • 可靠传输
        • 发送应答机制、超时重传、错误校验、流量控制和阻塞管理
  • 网络中传输数据的方式:使用二进制的方式

  • python3中的编解码

    • 编码:data.encode()
    • 解码:data.decode()
    • Linux系统中默认的编解码方式是 utf-8
    • Windows系统中默认的编解码方式是gbk
  • 客户端和服务端

    • 客户端是享受服务的这样的一类程序,会主动发起建立连接的请求,客户端程序一般运行在用户的终端设备上
    • 服务端是提供服务的这样的一类程序,等待接收连接的请求,服务器端程序一般运行在服务器上
  • TCP客户端的开发流程

    • 1、建立套接字
    • 2、与服务端建立连接
    • 3、发送信息
    • 4、接收信息
    • 5、完成对应的操作之后,可以关闭连接
  • TCP服务端的开发流程

    • 1、建立套接字

    • 2、绑定IP地址,固定自己的位置

    • 3、设置监听

    • 4、等待接收一些客户端的连接请求

    • 5、发送数据

    • 6、接收数据

    • 7、关闭套接字

    • 注意点

      • bind函数和connect函数一样,传入的参数是一个元组,元组里面包含IP地址和端口号,只不过如果服务端是在本地上运行,那么绑定地址的时候可以使用空字符串替代。

      • 创建的服务端套接字和与客户端建立连接后的这个套接字不一样,实现的作用和功能不一样,前者是用于监听和接收客户端的连接请求,后者是与客户端完成数据通信的套接字。

      • TCP客户端可以不用绑定端口号,TCP服务器端必须要绑定端口号,固定自己,让客户端能够找到服务端并请求提供服务。

      • 用于数据通信的套接字一旦被关闭,那么另一方的recv函数会解阻塞,会接收到空字符串,长度为零,可以利用这个特性判断通信的对方是否已经显式的关闭了套接字。

      • 设置端口复用(解决在调试TCP服务器端程序时,爆出的错误:地址已被使用):

        socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        
    • recv和send函数的实现机制:

      • 底层是通过缓冲区先将要发送的数据和要接收的数据进行缓存,当达到了指定的上限,则会将这一步缓存的数据交给要接收的变量。
    • 多任务版TCP服务器端程序的实现注意点:

      • 为什么使用多线程而不是用多进程?
        • 这里使用通过网络完成客户端和服务器端的数据通信,是网络I/O操作,适合使用多线程来处理,另一方面,线程占用资源更少,更加的灵活。

总结:多尝试,多百度有困难问百度。多练练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值