接下来有个需求就是需要监听服务器的udp端口,实时推送的接收数据,完成本地数据处理。在实践时笔者犯了错误,以为发送数据的服务器(数据源头)就是udp的服务器端,但是对于upd协议来说,发送端其实是client,而接收端需要绑定发送端的ip和port,需要blind。
下面就是笔者测试通过的接受服务器端的python脚本,基于socket模块实现。代码解析如下:
1、addr = (host, port):指定地址,注意需要时是元组类型;
2、udpServer.bind(addr):为服务器绑定一个固定的地址,ip和端口;
3、创建一个套接字socket对象,用于进行通讯,socket.SOCK_DGRAM 指明使用数据协议,即使用传输层的udp协议;
4、udpServer.recvfrom接收客户端传来的数据 recvfrom接收客户端的数据,默认是阻塞的,直到有客户端传来数据。recvfrom 参数的意义,表示最大能接收多少数据,单位是字节。xxx表示传来数据的客户端的身份信息,客户端的ip和端口,元组。
下面是笔者发送端(客户端)的程序,定时一秒钟发送一次信息,测试上面的接收服务器侧的数据接收情况。
网友评论