UDP套接字编程——Python语言描述
首先,回顾一下。在我们使用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语言描述相关推荐
- 网络编程---TCP/UDP套接字编程原理
本篇介绍的是Linux下的网络编程,故有些接口是不适用于Windows的,但是具体概念和实现方法是大体一致的 本篇重在讲解原理,具体实现请戳这里->UDP套接字编程实现 介绍 网络编程套接字(s ...
- 【Linux网络编程】UDP 套接字编程
[Linux网络编程]UDP 套接字编程 [1]用户数据报协议(UDP) UDP是一个简单的传输层协议,不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数 ...
- 计网实验原理-TCP/UDP套接字编程
计算机网络自顶向下结构--第7版 第二章实验,套接字编程 代码运行环境:window10,python 3.8.对于书上代码略作修改. 进程与计算机网络之间的接口 多数应用程序是由通信进程队组成的,每 ...
- 计算机网络实验:UDP套接字编程
计算机网络实验:UDP套接字编程 一.安装实验环境 二.编写程序并调试程序 三.实验代码 一.安装实验环境 这次实验使用的是C/C++来编写套接字程序,可以安装DEVC++.VC6.0.CodeBlo ...
- Linux IPv6 UDP套接字编程示例
udp ipv6套接字编程和ipv4接口类似,参数略有不同,流程都包括创建套接字.绑定地址.发送等. 下面是一个udp ipv6 demo, 包括创建ipv6套接字.绑定地址和发送数据等. 首先先在l ...
- linux udp套接字编程获取报文源地址和源端口(二)
之前项目中涉及udp套接字编程,其中一个要求是获取客户端发过来报文的端口和ip地址,功能很简单,只是对这一块不很熟.之前使用的方法是通过调用recvmsg这个接口,并通过参数msg里面的msg_nam ...
- TCP和UDP套接字编程
一.Socket简单介绍 如果要在应用层调用传输层的服务,进行相关程序的设计,就要涉及到套接字编程.套接字也称之为Socket,本质上它就是利用传输层提供的一系列Api来进行网络应用程序的设计. 网络 ...
- JAVA UDP套接字编程
JAVA UDP套接字编程 UDP套接字 无连接 非可靠传输 面向数据报 package com.lius.udp;import java.io.IOException; import java.ne ...
- 《网络编程》基本 UDP 套接字编程
在前面文章中介绍了<UDP 协议>和<套接字数据传输>.UDP 协议和 TCP 协议不同,它是一种面向无连接.不可靠的传输层协议.在基于 UDP 套接字编程中,数据传输可用函数 ...
最新文章
- AttributeError: module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘解决方法
- Vim实战指南(一):基础编辑命令
- python小工具myqr生成动态二维码
- Sockets programming in Python
- 《计算机网络》学习笔记_(2、物理层)
- sql组合键设置外键_学习SQL:外键
- slice 和splice 的区别 js
- Java从入门到精通 第4章 常量与变量
- TeaVM编译耗时太长,为节省时间,跳过test
- 【开源项目】二、Smart Admin 通用型中后台解决方案
- 记一次maven打包命令及指定pom文件
- 用C语言写个sin和cos程序,C语言sin和cos函数的实现
- 男朋友智商测试大集结(一):Oracle数据库查询操作练习81题(附答案)
- html如何将图片做成背景图片,css如何设置网页背景图片?
- 编程实现英语句子反转python_Python字符串处理实现单词反转
- 如何将本机的的git仓库提交到gitbub中
- Java课程设计答辩之感想
- 科目二:倒车入库考试技巧详细图解
- 字符编码、Unicode原理、数据流压缩Zlib与Miniz的实现
- Linux下的硬盘信息查看