1、创建服务端的socket以便开始通讯。
2、绑定ip以及端口号,这样客户端才能找到这个程序。
3、因为本地网卡不止一个所以尽量不写死,一般用""空来表示所有本地网卡。
4、接下来开始通过绑定的ip以及端口开始监听消息,设置最大接收1024字节消息,以防文件过大,占满网络缓存区。
5、收到消息之后,这时候就收到了客户端发送过来的ip以及端口,然后也可以再通过这个ip以及端口回发消息。
6、收到消息的时候,先确定客户端的编码形式是utf-8还是gbk,并且用同样的方式把字节码解码成能看懂的数据。
7、在进行回发的时候,要首先对要发送的数据进行编码,转换成对应的字节码发送。
8、最后一步就是关闭服务端,一般不做关闭,关闭软件即关闭服务端。
9、在用线程,进程,进程池的时候可实现消息收发的并行,协程的时候可实现伪并行,原理就是方法之间切换。
10、协程可使用封装好的框架,greenlet以及gevent框架来操作。
11、在服务端循环进行消息阻塞(接收消息)的时候,这里跟tcp不同,不需要每次使用时重用或者是释放所绑定端口。
12、tcp在四次挥手以后还要等待客户端一分钟左右才会释放端口,udp属于突发通讯,来即收,挥即去。
13、所以在这里并不需要立马再次重用这个端口。
from socket import *
# 服务端 # 建立服务端socket
socket_serve = socket(AF_INET, SOCK_DGRAM)
# 确定本地端口,可能多个,所以不限
local_port = ('', 8989)
# 绑定本地端口
socket_serve.bind(local_port) while True:
# 本地端口监听客户端数据(接收数据)
socket_temp_serve_data = socket_serve.recvfrom(1024)
# 数据解码
socket_serve_data = socket_temp_serve_data[0].decode('gbk')
# 打印接受到的数据
print(socket_serve_data)
# 用户输入数据并对客户端发送
socket_serve_sendto_temp_data = input('服务端:')
#对用户输入的数据进行编码
socket_serve_sendto_temp_data = '服务端:' + socket_serve_sendto_temp_data
socket_serve_sendto_data = socket_serve_sendto_temp_data.encode('gbk')
# 传输数据给客户端
socket_serve.sendto(socket_serve_sendto_data, socket_temp_serve_data[1])
# 关闭socket服务端
# socket_serve.close()

  

udp服务端收发数据流程的更多相关文章

  1. socket创建UDP服务端和客户端

    UDP服务端代码示例: from socket import * #1.创建数据报套接字 sockfd = socket(AF_INET, SOCK_DGRAM) #2.绑定服务端地 sockfd.b ...

  2. 简单的UDP服务端和客户端示例

    UDP的理论不再多说,我这里直接给出一个关于UDP的HelloWorld程序,代码明了,希望对刚入门的学生有所帮助! 当然,实际上,在这块我也刚入门! 首先写服务端代码,服务端邦定本地的IP和端口来监 ...

  3. 浏览器与服务端请求响应流程与HTTP协议

    浏览器与服务端请求响应流程图: 1.HTTP概要 1.1. 定义 HTTP(HyperText Transfer  Protocol,超文本传输协议)最早就是计算机与计算机之间沟通的一种标准协议,这种 ...

  4. python创建udp服务端和客户端

    1.udp服务端server from socket import * from time import ctime HOST = '' PORT = 8888 BUFSIZ = 1024 ADDR ...

  5. Diango之通过form表单向服务端发送数据

    通过form表单向服务端发送数据 表单元素 表单:form></form>表单用于向服务器传输数据.另外一种向服务端传输数据的方式为ajax. form属性: action:提交表单 ...

  6. 客户端通过HTTP协议与服务端交换数据

        客户端(包括浏览器)通过HTTP协议与服务端交换数据的描述 发起请求 header 键值对中的key大小写不敏感 Accept: application/json Content-Type: ...

  7. 基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据

    这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...

  8. java Socket Tcp示例三则(服务端处理数据、上传文件)

    示例一: package cn.itcast.net.p5.tcptest; import java.io.BufferedReader;import java.io.IOException;impo ...

  9. netty服务端客户端启动流程分析

    服务端启动流程 我们回顾前面讲解的netty启动流程,服务端这边有两个EventLoopGroup,一个专门用来处理连接,一个用来处理后续的io事件 服务端启动还是跟nio一样,绑定端口进行监听,我们 ...

随机推荐

  1. Java之谜 —— 来自Neal Gafter的演讲

    翻译人员: 铁锚 翻译日期: 2013年11月20日 原文链接: A Puzzle from "A Brief History of the (Java) World and a Peek ...

  2. 9.3、Libgdx手势检测

    (官网:www.libgdx.cn) 触摸屏在输入的基础上增加了手势检测,比如两个手指实现缩放,单击或双击屏幕,长按屏幕等. Libgdx提供了GestureDetector来帮助你检测以下手势: t ...

  3. CSS引入

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. shell的date命令:使用方法,以及小时、分钟的计算

    shell命令格式严格,不像python那样命令行中可以添加空格.如等号两边无空格.有多余空格错误,日期date命令就是最明显的例子. 命令格式: date [-u] [-d datestr] [-s ...

  5. Android的fuzz测试技术之符号执行浅谈-android学习之旅(82)

    简单的漏洞越来越少,需要改进目前的方法 : 通过符号执行,得出执行路径,然后在进行fuzzy是较为有效的方法之一 1)为待测单元自动地生成可到达的测试数据,即提高测试目标的覆盖率 2)根据特定的漏洞模 ...

  6. android动画介绍--Animation 实现loading动画效果

    Animation的使用方法并不难.这里简单的介绍一下使用方法. 先看效果图: 效果还是不错的吧. 下面来看看使用方法. 动画效果是通过Animation来实现的,一共有四种,分别为: AlphaAn ...

  7. 【翻译】使用新的Sencha Cmd 4命令app watch

    原文:http://www.sencha.com/blog/using-the-new-app-watch-command-in-sencha-cmd-4/ 作者:Don Griffin Don Gr ...

  8. Jumpstart for Oracle Service Bus Development

    http://www.oracle.com/technetwork/articles/jumpstart-for-osb-development-page--097357.html Tutorial ...

  9. Android监听电池状态

    监听电池状态只需要接收Intent.ACTION_BATTERY_CHANGED的广播即可,当电池状态发生变化时会发出广播. 1.运行状态如下图: (1)连接USB时的状态 (2)断开USB时的状态 ...

  10. LeetCode之“动态规划”:Maximal Square && Largest Rectangle in Histogram && Maximal Rectangle

    1. Maximal Square 题目链接 题目要求: Given a 2D binary matrix filled with 0's and 1's, find the largest squa ...