首先,回顾一下。在我们使用Socket编程之前的一些网络的概念。

IP:它是用来标识处于Internet之中的端系统的。

MAC:它是用于在同一局域网中标识不同的计算机的。

端口号:它是用来标识同一台主机上不同的网路应用程序的。

套接字成为了应用程序进行通信的一种抽象机制。每一个进程都有一个或者多个套接字。当生成一个套接字的时候,就会为它分配一个端口号。我们是在C/S架构上应用UDP套接字编程。那么,服务器总是在等待客户端的请求。客户端在请求的时候,它会告知目的地址(服务器的IP地址和目的进程的端口号)。

下面是服务器代码:

#python3实现循环无连接服务器
#包含socket库
from socket import *;
#服务器端口
server_port = 8000;
#创建套接字,设置Ipv4地址以及指定UDP连接
server_socket = socket(AF_INET,SOCK_DGRAM);
#绑定IP地址和端口号。监听该端口
server_socket.bind(('',server_port));
while True:print("receive data:");#从客户端发来的包中获取数据存放在data中,将源地址放在client_address中。#设置缓存大小为4096。完成这些功能需要使用函数recvfrom.data,client_address = server_socket.recvfrom(4096);print(data.decode()); #打印客户端的数server_socket.sendto("success!",client_address);
server_socket.close();

客户端代码:

#python3实现的客户端代码
#包含网络模块
from socket import *;
#服务器地址以及端口号
#127.0.0.1是本地回环地址,经常用来进行测试,也可以使用域名localhost来代替该ip地址
server_address = '127.0.0.1';
server_port = 8000;
#创建套接字    ipv4地址以及UDP协议
client_socket = socket(AF_INET,SOCK_DGRAM);while True:data = input("please input:");client_socket.sendto(data.encode(),(server_address,server_port));recv,server_addr = client_socket.recvfrom(4096);print(recv.decode());
client_socket.close();

运行结果如下:

这个就是运行结果。

总的来说,在使用UDP作为传输层协议的时候,客户端需要知道服务器的IP地址和目的端口号。由于UDP是面向无连接的协议,因此,客户端使用sendto函数来发送。创建套接字的时候注意UDP是SOCK_DGRAM。服务器也使用sendto函数来发送响应给客户端。recvfrom函数能够接受包,并知晓客户端的地址。

UDP套接字编程——Python语言描述相关推荐

  1. 网络编程---TCP/UDP套接字编程原理

    本篇介绍的是Linux下的网络编程,故有些接口是不适用于Windows的,但是具体概念和实现方法是大体一致的 本篇重在讲解原理,具体实现请戳这里->UDP套接字编程实现 介绍 网络编程套接字(s ...

  2. 【Linux网络编程】UDP 套接字编程

    [Linux网络编程]UDP 套接字编程 [1]用户数据报协议(UDP) UDP是一个简单的传输层协议,不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数 ...

  3. 计网实验原理-TCP/UDP套接字编程

    计算机网络自顶向下结构--第7版 第二章实验,套接字编程 代码运行环境:window10,python 3.8.对于书上代码略作修改. 进程与计算机网络之间的接口 多数应用程序是由通信进程队组成的,每 ...

  4. 计算机网络实验:UDP套接字编程

    计算机网络实验:UDP套接字编程 一.安装实验环境 二.编写程序并调试程序 三.实验代码 一.安装实验环境 这次实验使用的是C/C++来编写套接字程序,可以安装DEVC++.VC6.0.CodeBlo ...

  5. Linux IPv6 UDP套接字编程示例

    udp ipv6套接字编程和ipv4接口类似,参数略有不同,流程都包括创建套接字.绑定地址.发送等. 下面是一个udp ipv6 demo, 包括创建ipv6套接字.绑定地址和发送数据等. 首先先在l ...

  6. linux udp套接字编程获取报文源地址和源端口(二)

    之前项目中涉及udp套接字编程,其中一个要求是获取客户端发过来报文的端口和ip地址,功能很简单,只是对这一块不很熟.之前使用的方法是通过调用recvmsg这个接口,并通过参数msg里面的msg_nam ...

  7. TCP和UDP套接字编程

    一.Socket简单介绍 如果要在应用层调用传输层的服务,进行相关程序的设计,就要涉及到套接字编程.套接字也称之为Socket,本质上它就是利用传输层提供的一系列Api来进行网络应用程序的设计. 网络 ...

  8. JAVA UDP套接字编程

    JAVA UDP套接字编程 UDP套接字 无连接 非可靠传输 面向数据报 package com.lius.udp;import java.io.IOException; import java.ne ...

  9. 《网络编程》基本 UDP 套接字编程

    在前面文章中介绍了<UDP 协议>和<套接字数据传输>.UDP 协议和 TCP 协议不同,它是一种面向无连接.不可靠的传输层协议.在基于 UDP 套接字编程中,数据传输可用函数 ...

最新文章

  1. AttributeError: module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘解决方法
  2. Vim实战指南(一):基础编辑命令
  3. python小工具myqr生成动态二维码
  4. Sockets programming in Python
  5. 《计算机网络》学习笔记_(2、物理层)
  6. sql组合键设置外键_学习SQL:外键
  7. slice 和splice 的区别 js
  8. Java从入门到精通 第4章 常量与变量
  9. TeaVM编译耗时太长,为节省时间,跳过test
  10. 【开源项目】二、Smart Admin 通用型中后台解决方案
  11. 记一次maven打包命令及指定pom文件
  12. 用C语言写个sin和cos程序,C语言sin和cos函数的实现
  13. 男朋友智商测试大集结(一):Oracle数据库查询操作练习81题(附答案)
  14. html如何将图片做成背景图片,css如何设置网页背景图片?
  15. 编程实现英语句子反转python_Python字符串处理实现单词反转
  16. 如何将本机的的git仓库提交到gitbub中
  17. Java课程设计答辩之感想
  18. 科目二:倒车入库考试技巧详细图解
  19. 字符编码、Unicode原理、数据流压缩Zlib与Miniz的实现
  20. Linux下的硬盘信息查看

热门文章

  1. 多边形颜色填充-X扫描线算法
  2. linux系统安全和应用!
  3. 查找会议的地址和时间
  4. 精通 Grails: 用 JSON 和 Ajax 实现异步 Grails
  5. postman使用教程1
  6. 【Java基础】 ⾯向对象编程三⼤特性 --封装、继承、多态
  7. [TOG2019]Deferred Neural Rendering:Image Synthesis using Neural Textures
  8. Apollo架构体系、Apollo运行原理、Apollo配置中心简单介绍(一)
  9. Hi3559A 开发环境搭建
  10. BNUOJ 53073 【找规律】