zoukankan      html  css  js  c++  java
  • python3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socket

    客户端服务端架构(哪里用到了网络通信)

    客户端英文名称:Client(使用服务端的服务),服务端英文名称:Server(一直运行着,等待服务别人,不能有一天访问百度,百度页面打不开,不行吧。),

    下面所说的CS架构就是说的ClientServer架构。

        CS架构(****) client server

        软件CS架构:客户端服务端架构:京东,淘宝,今日头条,qq,微信.....

        BS架构:浏览器(browser)服务端>>>统一接口

        硬件CS架构: 打印机.

    网络通信的整个流程

      网线:传输电信号

      集线器:将所有连接到集线器的网络设备连通起来

      交换机: 升级版的集线器

      网卡:接受电信号

      MAC地址:物理地址:   8C-EC-4B-88-B9-C9  #前三位厂商编号,后三位生产流水号

      单播:

      广播: 

      广播风暴:网络拥堵,信息不安全

      Ip地址:

      IPv4 地址: 192.168.15.46 #4个点分十进制

      作用:划分广播域

      192.168.15.46  #

      Ipv4:192.168.15.0-192.168.15.255 # 八位二进制  256个电脑

      Ipv6:

      192.168.0.0 - 192.168.255.255

      ip地址段:192.168.15.0 -- 192.168.15.255

       DHCP:自动分配IP地址

      Arp表:保存着ip地址和mac地址对应关系

      Arp协议:通过ip地址获取mac地址

      子网掩码:计算两个ip地址是否属于同一网段:

      255.255.255.0

       源ip地址:192.168.15.46

      11000000.10101000.00001111.00101110

      11111111.11111111.11111111.00000000

      11000000.10101000.00001111.00000000 #192.168.15.0

       目标的ip:192.168.16.30   #192.168.16.0

       路由器:转发消息

      路由协议:计算路由转发消息的最优路径

      端口号:0 - 65535,确定电脑上的应用程序的

      Ip地址+端口 = 确定某个电脑上的某个应用程序

    初识socket

    服务端

    import socket
    
    #实例化socket对象
    server = socket.socket()  #创建了一部手机
    
    ip_port = ('192.168.15.46',8001) #买个电话卡
    
    #绑定IP地址和端口
    server.bind(ip_port) #插卡
    
    #监听,
    server.listen()  #开机
    #等待客户端连接
    print(111111)
    conn,addr = server.accept() #等别人的电话,阻塞
    print(222222)
    
    #发送消息
    # conn.send(b'leihao') #必须是bytes类型的数据
    
    server_msg = input('服务端说>>>>')
    
    conn.send(server_msg.encode('utf-8')) #必须是bytes类型的数据
    
    #接受消息
    from_client_msg = conn.recv(1024) #1024,一次性能够接受的消息大小1024B
    
    print('来自客户端的消息',from_client_msg)
    
    conn.send(b'gun')
    #挂电话,关闭通道
    conn.close()
    #关机,关闭socket
    server.close()
    View Code

    客户端

    import socket
    client = socket.socket()  #
    #服务端的ip地址和端口
    server_ip_port = ('192.168.15.46',8001)
    #连接服务端的应用程序
    client.connect(server_ip_port)
    
    print('ssss')
    from_server_msg1 = client.recv(1024)  #阻塞
    print('mmmm')
    print('服务端第一条消息:',from_server_msg1.decode('utf-8'))
    client.send(b'yuema')
    
    from_server_msg = client.recv(1024)
    
    print('来自服务端的消息:',from_server_msg)
    client.close()
    View Code

    加强服务端

    import socket
    
    #实例化socket对象
    server = socket.socket()  #创建了一部手机
    
    ip_port = ('192.168.15.46',8001) #买个电话卡
    
    #绑定IP地址和端口
    server.bind(ip_port) #插卡
    
    #监听,
    server.listen()  #开机
    #等待客户端连接
    print(111111)
    conn,addr = server.accept() #等别人的电话,阻塞
    
    print(222222)
    
    #发送消息
    # conn.send(b'leihao') #必须是bytes类型的数据
    
    while 1:
        server_msg = input('马云>>>>')
    
        conn.send(server_msg.encode('utf-8')) #必须是bytes类型的数据
    
        #接受消息
        from_client_msg = conn.recv(1024) #1024,一次性能够接受的消息大小1024B
    
        print('来自麻花藤的消息',from_client_msg.decode('utf-8'))
    
    # conn.send(b'gun')
    #挂电话,关闭通道
    conn.close()
    #关机,关闭socket
    server.close()
    View Code

    加强客户端

    import socket
    client = socket.socket()  #
    #服务端的ip地址和端口
    server_ip_port = ('192.168.15.46',8001)
    #连接服务端的应用程序
    client.connect(server_ip_port)
    
    while 1:
        from_server_msg1 = client.recv(1024)  #阻塞
        print('来自马云消息:',from_server_msg1.decode('utf-8'))
        client_msg = input('麻花藤>>>')
        client.send(client_msg.encode('utf-8'))
    
    from_server_msg = client.recv(1024)
    
    print('来自服务端的消息:',from_server_msg)
    client.close()
    View Code
  • 相关阅读:
    第三十三天 客户机和tcp多个客户端通信
    第三十二天黏包问题及解决方法:
    第三十一天 udp通信和黏包
    第三十天网路的基础
    第二十九天日志和config模块:
    Linux系统开机显示BusyBox v1.22.1 built-in shell(ash) 解决方法
    MTK迁移Oracle单库
    Ubuntu14.04安装mysql
    Ubuntu14.04下tomcat的安装
    Thinking in Java Chapter4 Exercise10 吸血鬼数字
  • 原文地址:https://www.cnblogs.com/wanxiangai/p/9995884.html
Copyright © 2011-2022 走看看