文档章节

python & udp做简单的消息传递

灰暗
 灰暗
发布于 2015/04/27 08:06
字数 354
阅读 20
收藏 0


内网的出口ip地址是动态变化的,而且是路由器动态分配的,在家如果想要连上,理论上需要拿到当前路由器的出口ip地址,及局域网内的端口映射即可. 

于是我们可以通过一个简单的python小程序,访问远程地址,拿到当前动态分配的ip.

1.0 版本是这样的 有客户端 有服务端  


# -*- coding:utf-8 -*-
import socket
def udpClient():
	address=('127.0.0.1',8080)
	udpClientSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 
	
	while True:
		data=raw_input('>')
		if not data:
			break
		udpClientSocket.sendto(data,address) 
		data,addr=udpClientSocket.recvfrom(2048)
		print data
	udpClientSocket.close()

udpClient()



server

# -*- coding:utf-8 -*-
import socket
from time import ctime

def udpServer():
	buffer=2048
	address=('127.0.0.1',8080)
	udpsock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
	udpsock.bind(address)
	while True:
		print 'wait for message...'
		data,addr=udpsock.recvfrom(buffer)
		udpsock.sendto('[%s]%s' %(ctime(),data),addr)
		print '...received from and retuned to:',addr
	udpsock.close()


udpServer()


2..0版是这样的  有服务端 无客户端

客户端是 一个定时任务 格式为:         

 echo 想要发送的内容 > /dev/udp/服务端p/服务端port

 样例 :               echo something what ?  > /dev/udp/192.168.0.1/9090

服务端是这样的  

root@localhost:/me/udpservices# more server.py 
# -*- coding:utf-8 -*-
import socket
from time import *
 
def udpServer():
    buffer=2048
    address=('0.0.0.0',1990)
    try:   
        udpsock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        udpsock.bind(address)
        
        while True:
            print 'wait for message...'
            data,addr=udpsock.recvfrom(buffer)
            timestr=strftime("%Y-%m-%d %H:%M:%S",localtime())   
            print addr[0]
            udpsock.sendto('%s' %(addr[0]),addr)
            file_out=open("./ip.txt",'a')
            file_out.write('[%s]   %s  %s\n' %(timestr,data,addr[0]))
            print '...received from and retuned to:',addr
            file_out.close();
    finally:        
        udpsock.close()
 
udpServer()




© 著作权归作者所有

共有 人打赏支持
灰暗
粉丝 1
博文 102
码字总数 167448
作品 0
焦作
架构师
Windows系统监听键盘通过UDP协议控制树莓派小车

  树莓派小车硬件从淘宝买到手后已经鼓捣很长时间了,其中最喜欢的应用是控制小车运动了。我的小车控制系统在开发的过程中遇到了很多小问题,都被我一一修正了,将开发经验与大家分享,希望...

FreeBuf
07/30
0
0
python开发的 dht网络爬虫

使用 libtorrent 的python绑定库实现一个dht网络爬虫,抓取dht网络中的磁力链接。 dht 网络简介 p2p网络 在P2P网络中,通过种子文件下载资源时,要知道资源在P2P网络中哪些计算机中,这些传输...

东昕
2014/08/22
0
24
Linux Socket 网络编程

From: www.ibm.com/developerworks Linux Socket 编程,第一部分 本教程展示如何开始使用套接字编程。重点集中于 C 和 Python,本教程指导您完成一个回显(echo)服务器和客户机(它们通过 ...

AlphaJay
2010/04/20
0
2
Python 爬虫的工具列表 附Github代码下载链接

这个列表包含与网页抓取和数据处理的Python库 1、网络 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库(基于pycurl)。 pycurl – 网络库(绑定libcurl)。 urllib3 – ...

大数据之路
2012/07/07
0
0
python开源工具列表【持续更新】

以下是个人在工作中整理的一些python wheel,供参考。 这个列表包含与网页抓取和数据处理的Python库 网络 通用urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库(基于pycurl)。...

武耀文
04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
30分钟前
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
57分钟前
10
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部