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() # 关闭服务器套接字

五.tcp-udp

1.基于udp协议的套接字编程: 由于udp无连接,所以可以同时多个客户端去跟服务端通信

基于tcp协议的套接字编程也可以实现,但更为复杂

2.revc 和 revcfrom 的异同

均是从内核态内存中接收数据,revc不能接收空数据;而revcfrom可以接收空数据

revc/revcfrom接收信息的原理:

网络编程[第二篇]基于udp协议的套接字编程的更多相关文章

  1. 网络编程[第一篇]基于tcp协议的套接字编程

    将服务端-客户端的连接比作双方打电话的过程 2019-07-24 一.客户端 主动的一方: 客户端实例化一个socket对象--> 主动像服务端发送连接请求--> (服务端接受请求后即可进 ...

  2. 网络编程之基于UDP协议的套接字编程、基于socketserver实现并发的socket

    目录 基于UDP协议的套接字编程 UDP套接字简单示例 服务端 客户端 基于socketserver实现并发的socket 基于TCP协议 server类 request类 继承关系 服务端 客户端1 ...

  3. 基于UDP协议的套接字编程

    基于udp协议的套接字编程 UDP是无链接的,先启动那一端都不会报错 UDP协议是数据报协议,发空的时候也会自带报头,因此客户端输入空,服务端也能收到 一般不用与传输大数据 虽然没有粘包问题,但是不能 ...

  4. 网络编程----socket介绍、基于tcp协议的套接字实现、基于udp协议的套接字实现

    一.客户端/服务器架构(C/S架构)                                                即C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架 ...

  5. 网络编程(基于udp协议的套接字/socketserver模块/进程简介)

    一.基于UDP协议的套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就 ...

  6. 网络编程基础:粘包现象、基于UDP协议的套接字

    粘包现象: 如上篇博客中最后的示例,客户端有个 phone.recv(2014) , 当服务端发送给客户端的数据大于1024个字节时, 多于1024的数据就会残留在管道中,下次客户端再给服务端发命令时 ...

  7. 网络编程(四)--基于udp协议的套接字、socketserver模块

    一.UDP协议(数据报协议) 1.何为udp协议 不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包. 以太网头 ip头                  ...

  8. python 之 网络编程(基于UDP协议的套接字通信)

    8.5 基于UDP协议的套接字通信 UDP协议:数据报协议 特点:无连接,一发对应一收,先启动哪一端都不会报错 优点:发送效率高,但有效传输的数据量最多为500bytes 缺点:不可靠:发送数据,无需 ...

  9. 网络编程(四)——基于udp协议的套接字socket、socketserver模块的使用

    基于udp协议的套接字.socketserver模块 一.UDP协议(数据报协议) 1.何为udp协议 不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包. ...

随机推荐

  1. wordpress爆破脚本的编写

    import requests import sys import queue import threading import time import getopt urll='' users='' ...

  2. storm滑动窗口

    Window滑动方式: 没有数据不滑动windowLength:窗口的时间长度/tuple个数slidingInterval:滑动的时间间隔/tuple个数 withWindow(Duration w ...

  3. Golang switch语句总结

    switch 语句基本结构 switch 条件表达式 { case 常量表达式1: 语句 1 case 常量表达式2: 语句 2 . . . case 常量表达式n: 语句 n default: 语句 ...

  4. DML:增、删、改表中数据

    1. 添加数据 (1) 常规添加 INSERT INTO 表名(列名,列名,列名) VALUES(值,值,值); (2) 简化添加 INSERT INTO 表名 VALUES(值,值,值); 规则: ...

  5. 关于springboot访问html页面讨论

    一.springboot项目无法直接访问static和templates文件夹html Spring Boot 默认将 /** 所有访问映射到以下目录: classpath:/static class ...

  6. Flume-自定义 Source 读取 MySQL 数据

    开源实现:https://github.com/keedio/flume-ng-sql-source 这里记录的是自己手动实现. 测试中要读取的表 CREATE TABLE `student` ( ` ...

  7. MongoDB(mongodb-win32-x86_64-enterprise-windows-64-4.2.1-signed.msi)下载,启动和插入数据,查询

    下载链接:https://pan.baidu.com/s/19lM5Q-_BaDbjaO1Pj0SbYg&shfl=sharepset 安装一路Next就行,安装完毕后,进入目录C:\Prog ...

  8. SOCKET原理(转载)

    SOCKET原理 一.套接字(socket)概念 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息: ...

  9. 使用.NET Framework开发IIS 7.0模块和处理程序拦截请求实现跳转

    扩展IIS的两种方法:模块与处理程序. 模块,类似于以前的IIS版本中的ISAPI筛选器,它参与每个请求处理.IIS中一些现成的模块包括身份验证模块(用于处理请求的身份验证状态),压缩模块(用于压缩返 ...

  10. Android 自定义AlertDialog退出对话框

    Android 自定义AlertDialog退出对话框 转 https://blog.csdn.net/wkh11/article/details/53081634在项目中很多时候会出现点击返回键出现 ...