Tomato 加 Python 建立 UDP Server

Tomato 上Python 的安装参照 oschina上的 http://m.oschina.net/blog/109937, 基本上用ipkg就搞定了。

U盘可以分多个区的,详细参考fdisk 的帮助.

安装过程后不要忘记修复几个错误,也就是用vi命令修改文件就行了。

安装完成后用python2或者python2.7测试 没有问题就可以写Server程序。

root@Test:/# python2.7
Python 2.7.3 (default, Apr 12 2012, 13:34:28)
[GCC 4.1.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
root@Test:/#

一个简单的UDP 程序如下:

Server.py(其中ProcData就是数据处理过程,输入接收的数据,返回要发送的数据)

#udp server
import socket

host = ''
port = 8999

def ProcData(data):
    if len(data)<=2:
        return data
    #add more code....

#print ProcData("020102020101")

server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind((host,port))
print "Sever start at %s" %port
while 1:
    msg,(addr,port) = server.recvfrom(1024,)
    msgEx = ProcData(msg)
    print msgEx+": got data %s from "%msg,addr,port
    server.sendto(msgEx,(addr,port))

Client.py(其中host 是服务器地址,先用本地IP调试,等完成Server的部署以后再换成域名测试)

import socket

host='192.168.6.1'
#host='xxx.3322.org'

client = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )

client.sendto( "02", (host, 8999) )
buf=client.recv(1024)
print "02 received: %s"%buf


完成上面的程序以后先在本地测试,没有问题就可以发布到路由器上了,发布的过程中发现一些问题,总结如下:

1. UDP Server自动启动,需要在"USB应用"->"USB设置"->挂载后运行脚本中输入

mount -o bind /tmp/mnt/OPTWARE/opt /opt
python2 /opt/proc/UDPServer.py &

2.防火墙相关的端口问题,默认是没有开启8999的,需要在"系统管理"->"脚本设置"->防火墙中输入以下脚本:

iptables -I INPUT -p udp --dport 8999 -j ACCEPT

没有问题重启路由器,用telnet进去ps看看有没有python的进程。如果进程没有问题,可以进行测试了,Client.py先用内网IP测试,再换域名测试(先要保证域名能正确解析)。

我在实现过程中,内网第一个脚本就好了,由于没有第二个脚本,外网一直测试不通过。

这次就测试到这里,设想这个UDP程序可以做一些加密注册验证之类的功能吧,以后有时间再研究写一个HTTP Server或者Web Services和XML RPC Server.
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值