zoukankan      html  css  js  c++  java
  • python-网络编程

    python-网络编程
    目录
    .架构:
    1.c/s架构(优势:能充分发挥PC机的性能)
    2.b/s架构;(B/S架构 统一了应用的接口)
    .网络基础:ip地址与ip协议
    端口
    mac地址:arp协议-查询ip地址和mac地址的关系
    互联网协议与osi模型
    socket模块
    socket(套接字)
    1.c/s架构(优势:就是能够充分发挥PC机的性能)
    client与server 中文意思:客户端与服务端架构 这种架构也是从用户层面(也可以是物理层面)来划分的.
    软件架构:京东,淘宝,qq,微信,暴风影音等
    硬件cs架构:打印机
    服务端:提供服务的 客户端:享受服务的
    2.b/s架构(统一了应用的接口)
    brower与server 中文意思:浏览器端与服务器端架构,这种从用户的层面来划分的.
    IP地址与IP协议:
    规定网络地址的协议叫ip地址,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
    范围0.0.0.0.-255.255.255.255
    一个ip地址通常写成四段十进制,如:192.168.15.81
    端口:标识电脑上某个应用程序,范围0-65535 0-1024内部应用的,我们一般使用的是8000以后的
    通过ip地址+端口:我们就能唯一确定一台电脑上的某个应用应程序
    mac地址:网卡唯一的标识,全球唯一,6位点分16进制
    arp协议-查询ip地址和mac地址的对应关系
    arp(address resolution protocol):地址解析协议,是根据目标ip地址获取目标物理地址的一个tcp/ip协议.
    路由器:是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者是一个子网,管理局域网
    局域网:是指在某一区域内由多台计算机互联成的计算机组成的.局域网是封闭行的,可以由办公室内的两台计算机组成,也可以是由一个公司的上千台计算机
    子网掩码:计算目标ip地址是否和咱们是同一网段
    同一网段的:广播(信息发给所有人)发送
    不同网段的:发送给路由器
    2.tcp与udp协议
    tcp协议:
    当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。
    这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。
    三次握手(一定是client先发起请求):
    a 客户端发起请求连接服务器
    b 服务器返回 : 接收到请求,并要求连接客户端
    c 客户端回复 : 可以连接
    四次挥手(谁先发起断开连接的请求都可以):
    a 客户端发起断开连接的请求:意思是: 我想和你断开连接,我没有数据要继续发送了,但是如果你有数据需要发送,我可以继续接收
    b 服务器回复 : 我接收到你的请求了
    c 服务器发送 : 我已经准备好断开连接了
    d 客户端回复 : 收到你的信息,断开连接
    相对TCP协议而言,UDP协议 当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接。
    当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。
    tcp和udp的区别
    tcp协议:面向连接,消息可靠,相对udp来讲,传输速度慢,消息是面向流的,无消息保护边界0
    udp协议:面向无连接,消息不可靠,传输速度快,消息是面向包的,有消息保护边界.
    osi模型:osi七层 tcpip五层 tcpip五层
    socket(套接字)初使用:
    基于tcp协议的socket
    tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端
    server端
    import socket
    sk = socket.socket()
    sk.bind(('192.168.15.81',8898))  #把地址绑定到套接字
    sk.listen()          #监听链接
    conn,addr = sk.accept() #接受客户端链接
    ret = conn.recv(1024)  #接收客户端信息
    print(ret)       #打印客户端信息
    conn.send(b'hi')        #向客户端发送信息
    conn.close()       #关闭客户端套接字
    sk.close()        #关闭服务器套接字(可选)
    client端
    import socket
    sk = socket.socket()           # 创建客户套接字
    sk.connect(('192.168.15.81',8898))    # 尝试连接服务器
    sk.send(b'hello!')
    ret = sk.recv(1024)         # 对话(发送/接收)
    print(ret)
    sk.close()            # 关闭客户套接字
    基于UDP协议的socket
    server端
    import socket
    udp_server=socket.socket(type=socket.SOCK_DGRAM)
    udp_server_ip_port=("192.168.15.81",8899)
    udp_server.bind(udp_server_ip_port)
    print("准备接受消息了....")
    from_client_msg,client_addr=udp_server.recvfrom(1024)
    print(1111)
    print(from_client_msg)
    print(client_addr)
    udp_server.sento(b"guiduzi",client_addr)
    udp_server.close()
    client端
    import socket
    udp_client=socket.socket(type=socket.SOCK_DGRAM)
    udp_server_ip_port=("192.168.15.81",8899)
    udp_client.sendto(b"hello",udp_server_ip_port)
    from_server_msg,server_addr=udp_client.recvfrom(1024)
    print(from_server_msg)
    print(server_addr)
    udp_client.close()




  • 相关阅读:
    一个基于C++11的定时器队列(timerfd,poll实现)
    Mysql学习(一)添加一个新的用户并用golang操作Mysql
    epoll使用详解
    基于C++11实现线程池的工作原理
    ubuntu18.04初始化配置
    muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor
    muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
    muduo网络库学习笔记(三)TimerQueue定时器队列
    关于 JavaScript 的 null 和 undefined,判断 null 的真实类型
    vue 双向数据绑定原理
  • 原文地址:https://www.cnblogs.com/Li-Kai-168/p/9798884.html
Copyright © 2011-2022 走看看