python:Socket编程(五):基于udp协议编程

注意:正是由于基于udp协议的Socket编程没有链接一说,所以:基于udp协议的套接字编程可以轻易的实现多客户端同时并发与服务端通信。

#-*-coding:utf-8-*-
#基于udp协议的套接字编程与基于tcp协议的套接字编程有部分不同
#基于udp协议的编程,没有链接一说;看下面代码

#服务端:

from socket import *

ip_port=("127.0.0.1",8080)
buffer_size=1024
udp_service=socket(AF_INET,SOCK_DGRAM)
#基于udp协议的套接字建立的对象不同于tcp协议的,tcp这里的参数:SOCK_STREAM,即:tcp数据流
#而,upd这里的参数:SOCK_DGRAM,即:数据报
#但是,tcp\udp都有一个AF_INET参数,即:基于网络
udp_service.bind(ip_port)
while True:
    msg,addr=udp_service.recvfrom(buffer_size)
    #基于udp协议的套接字,收消息使用recvfrom()方法,
    # 且收到的内容为tuple类型,内容包括:客户端真实想发的信息,客户端地址
    print(msg.decode("utf-8"))
    udp_service.sendto("大家好才是真的好!".encode("utf-8"),addr)
    # 基于udp协议的套接字,发消息使用sendto(内容,地址)方法;
udp_service.close()
#-*-coding:utf-8-*-
#基于udp协议的套接字编程
#客户端

from socket import *

ip_port=("127.0.0.1",8080)
buffer_size=1024

client=socket(AF_INET,SOCK_DGRAM)

while True:
    client_msg=input(">>>:").strip()
    if not client_msg:continue
    client.sendto(client_msg.encode("utf-8"),ip_port)
    msg,addr=client.recvfrom(buffer_size)
    print(msg.decode("utf-8"))
    # print(addr)


client.close()

利用udp协议的套接字编程,编写一个简单的时间服务:即:客户端输入时间格式,返回当前时间;如果输入空,返回默认格式的时间;

时间服务端:

from socket import *
import time

ip_sort=("127.0.0.1",8080)
buffersize=1024
time_service=socket(AF_INET,SOCK_DGRAM)#数据报

time_service.bind(ip_sort)

while True:
    data,addr=time_service.recvfrom(buffersize)
    if not data :
        time_t=time.strftime("%Y-%m-%d %X")
    else:
        time_t=time.strftime(data.decode("utf-8"))

    time_service.sendto(time_t.encode("utf-8"),addr)

time_service.close()

客户端:

from socket import *

time_client=socket(AF_INET,SOCK_DGRAM)

ip_sort=("127.0.0.1",8080)
suffersize=1024

while True:
    data=input(">>>:请输入时间格式:").strip()
    time_client.sendto(data.encode("utf-8"),ip_sort)
    time_t,addr=time_client.recvfrom(suffersize)
    print(time_t.decode("utf-8"))

time_client.close()

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值