前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UDP套接字编程——Python语言描述

UDP套接字编程——Python语言描述

作者头像
zy010101
发布2019-05-25 19:54:00
7150
发布2019-05-25 19:54:00
举报
文章被收录于专栏:程序员程序员

版权声明:本文为博主原创文章,转载请注明博客地址: https://cloud.tencent.com/developer/article/1433323

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

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

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

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

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

下面是服务器代码:

代码语言:javascript
复制
#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();

客户端代码:

代码语言:javascript
复制
#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函数能够接受包,并知晓客户端的地址。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档