Python网络编程02/基于TCP协议的socket简单的通信

Posted liubing8

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python网络编程02/基于TCP协议的socket简单的通信相关的知识,希望对你有一定的参考价值。

Python网络编程02/基于TCP协议的socket简单的通信

1.昨日内容回顾

1.单播:单独联系某一个人
2.广播:给所有人发送消息(群发)
3.比特流:bit就是0101跟水流一样的源源不断的发送01010101
4.以太网协议:将数据进行分组:一组称之为一帧,数据报
        head|data
 head:18字节:源mac地址|目标mac地址|数据类型
 data:最少46个字节,最多是1500个字节
5.mac地址:就是计算机网卡上记录的地址,世界上所有的计算机独一无二的标识,用于局域网内广播(单播)时查找的计算机位置
6.交换机:分流连接计算机的作用
7.路由器:家用路由器,企业版路由器
8.交换机的mac学习功能:
    第一次发送消息广播的形式,当学习记录表是上的端口与mac地址对应关系之后,再发送消息,是以单播的形式
    端口1:  1C-5F-4B-3E-35-2C
    端口2:  1C-5F-4B-6E-35-2C   
9.广播风暴: 所有的计算机都在广播的形式发送消息.
10.P协议: 四段分十进制
    172.168.0.1
子网掩码:
    A: 255.0.0.0
    B: 255.255.0.0
    C: 255.255.255.0
11.路由器: 
    外网(公网)IP, 
    内网(局域网)IP 都是假的,
    DHCP协议: 路由器自动分发的IP地址,网关等等.
    端口: 0~1023系统的, 自己选取端口8080 以后都可以.
12.ARP协议:通过IP地址获取计算机mac地址
13.TCP协议:面向链接的协议,流式协议,安全可靠效率低的协议,传输文件,浏览器等
14.UDP协议:用户数据报协议,效率高,不可靠协议,微信  

技术图片

技术图片

2.socket

2.1 socket套接字

1.socket是处于应用层与传输层之间的抽象层,它是一组操作起来非常简单的接口(接收数据)此接口接收数据后,交由操作系统
2.为什么存在socket抽象层
    如果直接与操作系统交互非常麻烦,繁琐,socket对这些繁琐的操作高度的封装,简化
3.socket在Python中就是一个模块

2.2 基于TCP协议的socket简单通信

  • 客户端(client)

    import socket
    # 买电话
    phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #拨打电话号码
    phone.connect(("127.0.0.1",8888))
    
    #给客户端发送内容
    date = input("请输入:")
    phone.send(date.encode("utf-8"))
    
    #允许接收服务端至多1024字节
    from_server_date = phone.recv(1024)
    # 打印服务端发过来的消息
    print(f"来自服务端的消息:from_server_date")
    
    phone.close()
  • 服务端(server)

    import socket
    #买电话
    #默认基于TCP协议的socket
    phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #绑定电话卡
    phone.bind(("127.0.0.1",8888))  #绑定IP地址和端口
    #开机监听
    phone.listen(5) #服务端可以接收N个链接,但是只能同一时刻回应五个请求.
    
    print(111)
    #等待连接
    conn,addr = phone.accept() #阻塞(等待客户端的连接)
    
    print(conn,addr)# 打印数据传输的通道、客户端的ip 端口,conn代表两条管道
    
    from_client_data = conn.recv(1024) #至多接收1024个字节 阻塞
    #超过1024分批接收
    
    print(f'来自客户端的消息:from_client_data') #打印客户端发送的内容
    
    conn.send(from_client_data.upper()) #给客户端发送内容
    
    conn.close() #关闭通道
    
    phone.close()#关机

以上是关于Python网络编程02/基于TCP协议的socket简单的通信的主要内容,如果未能解决你的问题,请参考以下文章

重温网络编程——协议

1.tcp协议 三次握手建链接 四次挥手断开链接 tcp协议的状态 syn洪水攻击与半连接池 互联网协议详解 3. socket介绍 4. 基于socke

套接字编程——基于TCP协议

82.基于tcp和udp协议的简单通信套接字编程

4-socket套接字编程

初识Socket通信:基于TCP和UDP协议学习网络编程