平时本人的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
当然也可以添加传输文件的功能,先这样吧,够用就行了。