网络编程[第二篇]基于udp协议的套接字编程

Posted xxp1624

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程[第二篇]基于udp协议的套接字编程相关的知识,希望对你有一定的参考价值。

udp协议下的套接字编程

一.udp是无链接的    不可靠的

而上篇的tcp协议是可靠的,会有反馈信息来确认信息交换的完成与否

基于udp协议写成的服务端与客户端,各司其职,不管对方是否接收到信息,只需自己发送了即可

二.客户端

import socket

#买手机  --  套接字家族 | 端口协议
phone = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#服务端地址
ip_port = (127.0.0.1,8001)
#实现多次发送信息
while True:
    #自定义一条信息
    msg = input(输入一条信息:)
   #若信息为空,会导致程序卡死,用if判断跳过此情况
    if not msg:
        continue
    # 接通电话后发信息  指定数据 和 服务端地址
    phone.sendto(msg.encode(utf-8),ip_port)
    print(向服务端发送信息:,msg)
    #接收反馈信息  指定一次接收的量
    data,addr = phone.recvfrom(10)
    print(成功接收到服务端反馈信息 )
#关机
phone.close()

 

三.服务端

import socket

#买手机  --  套接字家族 | 端口协议
phone = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#买电话卡  --  监听一个地址- ip | 端口号
phone.bind((127.0.0.1,8001))

#多次接发信息  
while True:
    #电话接通后接收信息  指定一次接收信息的数量
    #返回数据 和 客户端地址
    data,addr = phone.recvfrom(10)
    print(接受到客户端信息为: ,data)
    #接收到信息后,反馈给client端一个信息,以告诉他已成功接收
    phone.sendto(data,addr)
    print(成功向客户端发送一个反馈信息)

    #完成一切操作后关掉link,再关机
link.close()
phone.close()

 

四.总结——简化

客户端:

cs = socket()   # 创建客户套接字
comm_loop:      # 通讯循环
    cs.sendto()/cs.recvfrom()   # 对话(发送/接收)
cs.close()                      # 关闭客户套接字

 

服务端:

1 ss = socket()   #创建一个服务器的套接字
2 ss.bind()       #绑定服务器套接字
3 inf_loop:       #服务器无限循环
4     cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)
5 ss.close()                         # 关闭服务器套接字

 

以上是关于网络编程[第二篇]基于udp协议的套接字编程的主要内容,如果未能解决你的问题,请参考以下文章

网络编程之基于UDP协议套接字

基于UDP协议的socket套接字编程

网络编程——基于udp协议的套接字socketsocketserver模块的使用

Python--网络编程-----基于UDP协议的套接字

82.基于tcp和udp协议的简单通信套接字编程

Python之路(第三十二篇) 网络编程:udp套接字简单文件传输