文本共享小工具
平时本人的android手机上看都不错的视频,想在电脑上看,如果用的windows好多了,
QQ上有“我的设备”直接把链接发送过去就好了,但是对于linux用户,android上也有一些软件可以,
但是本人没用过,而且不需要多强大的功能,就写了个小工具。
对于android开发本人并不熟,写个简单的小程序,还是可以的,图形化编程都有通性。
用到的android知识并不多,通信就是udp的广播,pc端的server监听8082接受信息;
1、客户端默认是广播把信息传递出去的,但是本人办公的地方广播接收不到信息,也许路由设置了或者
别的原因在别的环境就可以。
如下图:
1.如果广播能收到图中的“ip address”就不用设置了;
2.如果收不到,就要设置ip address,再次打开程序时会自动填充上次使用的ip,但是由于每次
启动程序默认广播,填充的ip地址不会被使用,除非你点击ip地址(本人添加的EditText点击事件),
点击后才能使用;当然你如果重新输入ip后,不用点了(本人添加的文本change事件)。
按钮clip是发送手机剪切板上的信息到PC,在下面的输入框是发送想输入的或者把信息粘贴到
这里再按send发送到pc上。
2、PC端就简单了,代码如下:
1 import socket 2 import fcntl 3 import struct 4 import platform 5 def get_ip_address(ifname): #linux获取ip 6 soc= socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 7 return socket.inet_ntoa(fcntl.ioctl( 8 soc.fileno(), 9 0x8915, # SIOCGIFADDR 10 struct.pack('256s', ifname[:15]) 11 )[20:24]) 12 def green(src): #在windows cmd上不可用 13 if src is None: 14 src='' 15 return '\033[0;32m'+src+'\033[0m' 16 17 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 18 s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) 19 s.bind(('', 8082)) 20 21 OS=platform.system() 22 ip=None 23 if OS=='Linux': 24 ip=get_ip_address('eth1') 25 elif OS=='Windows' or 'CYGWIN' in OS: 26 ip = socket.gethostbyname(socket.gethostname()) #win上获得ip 27 src="%s %d" %(ip,8082) 28 print 'Server:',green(src) 29 while 1: 30 message, address = s.recvfrom(4096) 31 if message: 32 print message 33 print green('Come from:'+str(address)) 34
上面程序仅仅是把信息显示出来,没做别的处理,比如可以把信息设置进pc的剪切板里。
”What are the costs"和“hello”即是PC接受的信息。
android的代码在http://git.oschina.net/wuchaofan/clipshare
当然也可以添加传输文件的功能,先这样吧,够用就行了。