zoukankan      html  css  js  c++  java
  • 网络UDP

    怎样查看端口号 ?

    • 用 netstat -an 查看程序所使用的端口号
    • lsof -i [tcp/udp]:2425 查看端口号对应的应用程序
     

    UDP的优缺点

    优点:

    • 传输速度快
    • 不需要连接,资源开销小

    缺点:

    • 传输数据不可靠,容易丢数据包
    • 没有流量控制,当对方没有及时接收数据,发送方一直发送数据会导致缓冲区数据满了,电脑出现卡死情况,所有接收方需要及时接收数据。

    发送数据

    import socket
    
    # 1. 创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 2. 准备接收方的地址
    # '192.168.1.103'表示目的ip地址
    # 8080表示目的端口
    dest_addr = ('192.168.1.103', 8080)  # 注意 是元组,ip是字符串,端口是数字
    
    # 3. 从键盘获取数据
    send_data = input("请输入要发送的数据:")
    
    # 4. 发送数据到指定的电脑上的指定程序中
    udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
    
    # 5. 关闭套接字
    udp_socket.close()

    发送、接收数据

    import socket
    
    # 1. 创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 2. 准备接收方的地址
    dest_addr = ('192.168.236.129', 8080)
    
    # 3. 从键盘获取数据
    send_data = input("请输入要发送的数据:")
    
    # 4. 发送数据到指定的电脑上
    udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
    
    # 5. 等待接收对方发送的数据
    recv_data = udp_socket.recvfrom(1024)  # 1024表示本次接收的最大字节数
    
    # 6. 显示对方发送的数据
    # 接收到的数据recv_data是一个元组
    # 第1个元素是对方发送的数据
    # 第2个元素是对方的ip和端口
    print(recv_data[0].decode('gbk'))
    print(recv_data[1])
    
    # 7. 关闭套接字
    udp_socket.close()

    绑定端口号

    #coding=utf-8
    
    from socket import *
    
    # 1. 创建套接字
    udp_socket = socket(AF_INET, SOCK_DGRAM)
    
    # 2. 绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配
    local_addr = ('', 7788) #  ip地址和端口号,ip一般不用写,表示本机的任何一个ip
    udp_socket.bind(local_addr)
    
    # 3. 等待接收对方发送的数据
    recv_data = udp_socket.recvfrom(1024) #  1024表示本次接收的最大字节数
    
    # 4. 显示接收到的数据
    print(recv_data[0].decode('gbk'))
    
    # 5. 关闭套接字
    udp_socket.close()

    发送广播

    import socket
    # 创建udpsocket
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 设置socket的选项,允许发送广播消息
        udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True)
        # 发送广播消息
        udp_socket.sendto("大家好,我叫小郭同学,多多关照!".encode("gbk"), ("255.255.255.255", 9090))
        # 关闭socket
        udp_socket.close()
    --编码和解码
    encode()    decode() 解码
    bytes.decode(encoding="utf-8", errors="strict")
    strict:如果编解码不成功则崩溃
    ignore:如果编解码不成功程序不会崩溃
    import socket
    
    # 1. 创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 2. 准备接收方的地址
    # '192.168.1.103'表示目的ip地址
    # 8080表示目的端口
    dest_addr = ('192.168.1.103', 8080)  # 注意 是元组,ip是字符串,端口是数字
    
    # 3. 从键盘获取数据
    send_data = input("请输入要发送的数据:")
    
    # 4. 发送数据到指定的电脑上的指定程序中
    udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
    
    # 5. 关闭套接字
    udp_socket.close()

     

  • 相关阅读:
    面试中AOP这样说,面试官只有一个字:服!
    Spring第三天,详解Bean的生命周期,学会后让面试官无话可说!
    Spring第二天,你必须知道容器注册组件的几种方式!学废它吊打面试官!
    C#一些基础知识回顾
    关闭WiN10自动更新和后台程序。
    python脚本显示运行进程
    选择pyqt5理由
    anaconda3下64位python和32位python共存
    爬取百度搜索信息
    python尝试windows在用端口
  • 原文地址:https://www.cnblogs.com/lab-zj/p/12166229.html
Copyright © 2011-2022 走看看