• 初识网络编程


    网络基础

    早先:联机

      

    局域网与交换机

      

    广播

      主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。

    IP地址与IP协议

    • 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
    • 范围0.0.0.0-255.255.255.255
    • 一个ip地址通常写成四段十进制数,例:172.16.10.1

    mac地址

    head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址。

      mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

    广域网与路由器

        

    我们了解的涉及两个程序之间相互通讯的大致分为两类:

    第一种应用类:QQ,微信,...需要安装的应用桌面

    第二种web类:使用浏览器访问就可以直接使用的应用

    客户端:CS架构

    c/s即:Client与Server,  客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面来划分的)

        

    浏览器:BS架构

    B/S即:Browser与Server     浏览器端与服务器端架构,这种架构是从用户层面来划分的

        

    网络编程示例

    import socket
    
    #创建服务端socket对象
    server = socket.socket()
    
    #绑定IP和端口
    server.bind(('192.168.13.155',8000))
    
    #后边可以等待X个
    server.listen(5)    #等待五个
    
    print("服务端准备开始接受客户端的链接")
    #等待客户端来链接,如果没有就一直等待
    #conn 是客户端与服务端连接的对象,服务端以后要通过该对象进行收发数据
    #addr 是客户端的地址信息
    conn,addr = server.accept()
    
    print("已经有人连接上了,客户端信息:",conn,addr)
    
    #通过对象去获取
    data = conn.recv(1024)     #服务端通过对象获取数据时,一次最多取1024字节
    
    print("已经有人发来信息了"data)
    
    #服务端通过连接对象给客户端回复消息
    conn.send(b'stop')
    #与客户端断开连接
    conn.close()
    #关闭服务端的服务
    server.close()

    服务端:

    import socket
    
    server = socket.socket()   #实例socket对象
    
    server.bind(('192.168.13.155',8001))
    
    server.listen(5)
    
    while True:
        coon.addr = server.accept()
        #字节类型
        while True:
            data = conn.recv(1024)  #阻塞
            if data == b'exit':
                break
            response = data + b'213'
            conn.send(response)
    
        conn.close()
    服务端.py

    客户端:

    import socket
    
    sk = socket.socket()
    sk.connect(('192.168.13.155',8001))
    
    while True:
        name = input("请输入姓名:")
        sk.send(name,encode(utf-8))  #转换字节
        if name == 'exit':
            Break
    
        response = sk.recv(1024)  
        print(response.decode('utf-8'))
    
    sk.close()
    客户端.py
  • 相关阅读:
    OAuth 2.0理论
    mvvm
    js中使用new所做的事情
    使用vue实现图片上传插件
    控制元素滚动位置
    float属性
    确定节点直接的关系
    react 开发中的问题简记
    深复制浅复制
    HTML和CSS实现常见的布局
  • 原文地址:https://www.cnblogs.com/wangjun187197/p/9579496.html
Copyright © 2020-2023  润新知