文档章节

python & udp做简单的消息传递

灰暗
 灰暗
发布于 2015/04/27 08:06
字数 354
阅读 21
收藏 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
博文 103
码字总数 167860
作品 0
焦作
架构师
私信 提问
Windows系统监听键盘通过UDP协议控制树莓派小车

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

FreeBuf
07/30
0
0
使用 Python 的 Socket 模块构建一个 UDP 扫描工具

当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机。这个任务还可能包含嗅探和解析网络中数据包的能力。 几周前,我曾经谈到了如何使用Wireshark来进行数据包嗅探,但如果你没有...

oschina
2015/06/22
9.3K
9
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
1K
2
python实现socket通讯(UDP)

Server: Client: 运行结果: server [work@db-testing-com06-vm3.db01.baidu.com python]$ python udp_ss.py received: aaaaaa from ('127.0.0.1', 10169) received: 123456 from ('127.0.......

长平狐
2013/01/06
129
0

没有更多内容

加载失败,请刷新页面

加载更多

linux脚本中父shell与子shell 执行的几种方式

本文主要介绍以下几个命令的区别: shell subshell source $ (commond) `commond` Linux执行Scripts有两种方式,主要区别在于是否建立subshell 1. source filename or . filename 不创建sub...

问题终结者
18分钟前
1
0
安装jdk和Tomcat

12月12日任务 16.1 Tomcat介绍 16.2 安装jdk 16.3 安装Tomcat Tomcat介绍 Tomcat是apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由apache、Sun和其他一些...

robertt15
19分钟前
3
0
Beetl 免费视频

来自 https://my.oschina.net/gking?q=Beetl ,Beetl终于有人录制视频了 项目git地址:https://gitee.com/gavink/beetl-blog 视频地址:下载下来会更清晰,视频比较长,可使用倍速看 百度网盘...

闲大赋
31分钟前
0
0
isEmpty和null的区别

isEmpty和null的区别: 1.一个是对象为空(IsNull),一个是值为空(IsEmpty) 2.IsNull指任务类型变量是否为空包括对象类型的变量。 IsNull函数: 功能:返回Boolean的值,指明表达是否不包...

DemonsI
57分钟前
3
0
Centos7 安装mysql与php

https://blog.csdn.net/qq_36431213/article/details/79576025 官网下载安装mysql-server 依次使用下面三个命令安装 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.r......

Yao--靠自己
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部