• Python网络编程—socket套接字编程(UDP)


    套接字介绍

    1.套接字 : 实现网络编程进行数据传输的一种技术手段

    2.Python实现套接字编程:import socket

    3.套接字分类

    • 流式套接字(SOCK_STREAM): 以字节流方式传输数据,实现tcp网络传输方案。(面向连接--tcp协议--可靠的--流式套接字)
    • 数据报套接字(SOCK_DGRAM):以数据报形式传输数据,实现udp网络传输方案。(无连接--udp协议--不可靠--数据报套接字)

    UDP套接字编程

    服务端流程

    1.创建数据报套接字

    sockfd = socket(AF_INET,SOCK_DGRAM)

    2.绑定地址

    sockfd.bind(addr)

    3.消息收发

    data,addr = sockfd.recvfrom(buffersize)

    • 功能: 接收UDP消息
    • 参数: 每次最多接收多少字节
    • 返回值: data 接收到的内容
    •     addr 消息发送方地址

    n = sockfd.sendto(data,addr)

    • 功能: 发送UDP消息
    • 参数: data 发送的内容 bytes格式
    •     addr 目标地址
    • 返回值:发送的字节数

    4.关闭套接字

    sockfd.close()

     1 """
     2 重点代码
     3 """
     4 
     5 from socket import *
     6 
     7 # 创建套接字
     8 sockfd = socket(AF_INET, SOCK_DGRAM)
     9 
    10 # 绑定地址
    11 server_addr = ('127.0.0.1', 8888)
    12 sockfd.bind(server_addr)
    13 
    14 # 收发消息
    15 while True:
    16   data, addr = sockfd.recvfrom(1024)
    17   print("收到的消息:", data.decode())
    18   sockfd.sendto(b'Receive', addr)
    19 
    20 # 关闭套接字
    21 sockfd.close()
    UDP服务端流程

    客户端流程

    1.创建套接字

    2.收发消息

    3.关闭套接字

     1 """
     2 重点代码
     3 """
     4 
     5 from socket import *
     6 
     7 # 服务端地址
     8 ADDR = ('127.0.0.1',8888)
     9 
    10 # 创建套接字
    11 sockfd = socket(AF_INET,SOCK_DGRAM)
    12 
    13 # 循环发送消息
    14 while True:
    15   data = input("Msg>>")
    16   if not data:
    17     break
    18   sockfd.sendto(data.encode(),ADDR)
    19   msg,addr = sockfd.recvfrom(1024)
    20   print("From server:",msg.decode())
    21 
    22 sockfd.close()
    udp客户端流程

    练习 :  使用udp完成单词查询,要求一个服务端拥有单词本,从客户端可以循环输入单词,得到单词解释.客户端可以直接回车或者发送特殊字符表示退出

     1 from socket import  *
     2 
     3 DICT_TEXT = './dict.txt'
     4 
     5 def find_word(word):
     6   f = open(DICT_TEXT)
     7   for line in f:
     8     tmp = line.split(' ')[0]
     9     # 遍历的单词已经大于目标
    10     if tmp > word:
    11       return "没有找到该单词"
    12     elif tmp == word:
    13       return line
    14   else:
    15     return "没有找到该单词"
    16 
    17 s = socket(AF_INET,SOCK_DGRAM)
    18 s.bind(('0.0.0.0',8888))
    19 
    20 while True:
    21   data,addr = s.recvfrom(1024)
    22   mean = find_word(data.decode())
    23   s.sendto(mean.encode(),addr)
    24 
    25 s.close()
    26 --------------------------------------
    27 """
    28 udp客户端流程
    29 """
    30 
    31 from socket import *
    32 
    33 # 服务端地址
    34 ADDR = ('127.0.0.1',8888)
    35 
    36 # 创建套接字
    37 sockfd = socket(AF_INET,SOCK_DGRAM)
    38 
    39 # 循环发送消息
    40 while True:
    41   data = input("Word>>")
    42   if not data:
    43     break
    44   sockfd.sendto(data.encode(),ADDR)
    45   msg,addr = sockfd.recvfrom(1024)
    46   print("From server:",msg.decode())
    47 
    48 sockfd.close()
    练习
  • 相关阅读:
    ResellerClub的域名接口
    爱上英语题库系统,郭雄飞
    多操作系统的服务器虚拟化详解 蓝色梦想网
    mylove温纯,给我的最爱
    LinkedIn 646万用户密码网上泄露及下载地址
    JavaScript对象系统的使用
    asp.net 中提交按钮的click事件
    js中this的使用
    js keycode 事件响应
    js form中的onsubmit和action
  • 原文地址:https://www.cnblogs.com/maplethefox/p/10988990.html
Copyright © 2020-2023  润新知