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

    socket简介

    socket(简称 套接字) 是进程间通信的一种方式

    1. 创建socket

    在 Python 中 使用socket 模块的函数 socket 就可以完成:

    import socket
    socket.socket(AddressFamily, Type)

    说明:

    函数 socket.socket 创建一个 socket,该函数带有两个参数:

    Address Family:
    AF_INET (用于 Internet 进程间通信),实际工作中常用AF_INET
    AF_UNIX (用于同一台机器进程间通信)
    Type:套接字类型
    SOCK_STREAM (流式套接字,主要用于 TCP 协议)
    SOCK_DGRAM (数据报套接字,主要用于 UDP 协议)
    创建一个tcp socket(tcp套接字) 创建一个udp socket(udp套接字)
    import socket
    
    # 创建tcp的套接字
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # ...这里是使用套接字的功能(省略)...
    
    # 不用的时候,关闭套接字
    s.close()
    import socket
    
    # 创建udp的套接字
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # ...这里是使用套接字的功能(省略)...
    
    # 不用的时候,关闭套接字
    s.close()
    说明
    • 套接字使用流程 与 文件的使用流程很类似
      1. 创建套接字
      2. 使用套接字收/发数据
      3. 关闭套接字

    udp网络程序-发送、接收数据

    创建一个基于udp的网络程序流程很简单,具体步骤如下:

    1. 创建客户端套接字
    2. 发送/接收数据
    3. 关闭套接字

     

     

    1. udp网络程序-发送数据

    2. udp网络程序-发送、接收数据

    #coding=utf-8
    
    from socket import *
    
    # 1. 创建udp套接字
    udp_socket = socket(AF_INET, 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()
    #coding=utf-8
    
    from socket import *
    
    # 1. 创建udp套接字
    udp_socket = socket(AF_INET, 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()
  • 相关阅读:
    看完了红米5 Plus发布会,我觉得魅蓝Note6降价降多了
    红米5/红米5 Plus逼出最强魅蓝Note6?降价后已成性价比神机
    java.lang.NoClassDefFoundError: org/apache/ibatis/mapping/DatabaseIdProvider
    mac tree命令
    spring boot集成dubbo
    玩转Spring Boot 集成Dubbo
    Linux下复制粘贴快捷键
    用创业舞动飞扬的青春
    SpringMVC 学习笔记(一) Hello World
    从 Kubernetes 谈容器网络
  • 原文地址:https://www.cnblogs.com/zeon/p/13581487.html
Copyright © 2011-2022 走看看