udp服务端收发数据流程

简介: 1、创建服务端的socket以便开始通讯。2、绑定ip以及端口号,这样客户端才能找到这个程序。3、因为本地网卡不止一个所以尽量不写死,一般用""空来表示所有本地网卡。4、接下来开始通过绑定的ip以及端口开始监听消息,设置最大接收1024字节消息,以防文件过大,占满网络缓存区。
+关注继续查看
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()

  

                                                                   -------  知识无价,汗水有情,如需搬运请注明出处,谢谢!

目录
相关文章
|
3月前
|
算法 网络协议 安全
m基于DE2-115开发板的网口UDP数据收发系统FPGA实现
m基于DE2-115开发板的网口UDP数据收发系统FPGA实现
189 0
|
5月前
|
网络协议 Java API
【web】计算机网络编程(重点:UDP数据报/TCP流套接字编程)
​本文是计算机网络编程初级入门,主要介绍了网络编程的定义、Socket套接字、UDP数据报套接字编程、TCP流套接字编程、理解协议。
|
7月前
|
监控 网络协议 安全
一文了解HTTP、HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域)
一文了解HTTP、HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域)
udp客户端收发数据流程
1、创建客户端socket开始进行通讯。2、这时服务端应该先启动,并在知道服务端的ip以及端口号的时候才能进行通讯。3、本地不需要绑定ip以及端口号,在用此套接字对象发送消息的时候会自动分配活动端口(1024-65535) 每次重启程序可能每次都不一样。
1243 0
|
Linux
UDP socket流程(14)——ip_local_out及其调用的函数
作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net ip_local_out的代码很短 int ip_local_out(struct sk_buff *skb) {     int err;     /*      调用netfilter的hook检查该包是否可以发送。
1022 0
UDP socket流程(13)——ip_push_pending_frames
作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net 今天开始学习新的函数ip_push_pending_frames,这个函数会被icmp_push_reply,ip_send_reply,raw_sendmsg,和udp_push_pending_frames调用。
943 0
|
API
UDP socket流程(12)——udp_push_pending_frames
作者:gfree.wind@gmail.com博客:linuxfocus.blog.chinaunix.net 本来按照昨天的想法,是想把ip_append_data以及之前遇到的问题和不解整理思考一下的,但今天还是想把send的流程走完,再总结比较好,那么就开始下一个API——udp_push_pending_frames吧。
1190 0
|
缓存
内核中的UDP socket流程(11)——ip_append_data
作者:gfree.wind@gmail.com博客:linuxfocus.blog.chinaunix.net 继续ip_append_data,         if (copy > length)             copy = length;         if (!(rt->dst.
1268 0
|
网络安全 网络虚拟化
内核中的UDP socket流程(10)——ip_append_data
作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net 现在换一种风格,把一些对代码的解读直接写到代码段。那样看起来可能更好 继续ip_append_data,     /* hh_len是hardware header...
1149 0
|
网络协议
内核中的UDP socket流程(9)——ip_append_data
作者:gfree.wind@gmail.com 原文:http://blog.chinaunix.net/space.php?uid=23629988&do=blog&id=96739 下面开始分析ip_append_data这个函数。
1622 0
推荐文章
更多