文本共享小工具

   平时本人的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

    当然也可以添加传输文件的功能,先这样吧,够用就行了。

posted @ 2013-11-19 14:54  除e尘  阅读(418)  评论(0编辑  收藏  举报