[开源]Android手机控制电脑----服务器端

首先是要有一个服务器端   开启端口监听  界面如下




输入端口号  点击开启  即可实现端口的监听

public void run(){
    		try {
    			//创建一个DatagramSocket对象,并指定监听的端口号
    			DatagramSocket socket;
    			try{
    				socket = new DatagramSocket(port);
    			}catch(Exception e){
    				messagebox.setText("端口被使用,请更换端口");
    				startbutton.setEnabled(true);
    				stopbutton.setEnabled(false);
    				menux=0; 				
    				field.setEditable(true);
    				return;
    			}
				byte data [] = new byte[1024];
				//创建一个空的DatagramPacket对象
				DatagramPacket packet = new DatagramPacket(data,data.length);
				//使用receive方法接收客户端所发送的数据
				System.out.println("开启端口监听"+socket.getLocalPort());
				
				while(true){
					socket.receive(packet);
					message = new String(packet.getData(),packet.getOffset(),packet.getLength());
//					System.out.println("message--->" + message);
					messagebox.setText(message);			
					
					messages = message.split(":");
					if(messages.length>=2){
						type= messages[0];
						info= messages[1];
						if(type.equals("mouse"))
							MouseMove(info);
						if(type.equals("leftButton"))
							LeftButton(info);
						if(type.equals("rightButton"))
							RightButton(info);
						if(type.equals("mousewheel"))
							MouseWheel(info);
						if(type.equals("keyboard"))
							KeyBoard(info);
					}
				
				}
				
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    	}

使用DatagramSocket socket = new DatagramSocket(port);创建一个UDP的端口 


通过while(true) {  socket.receive(packet); } 实现端口的一直监听


通过message = new String(packet.getData(),packet.getOffset(),packet.getLength());  接收客户端传来的信息 解析为一个字符串


手机端发送的信息  由  type:info 组成   比如 我们想要实现鼠标左击  发送 leftButton:click 这个字符串


服务器段 解析这个字符串后 根据type:info      把messages = message.split(":"); 分解为type  和 info两部分


if(type.equals("leftButton"))   LeftButton(info);


public void LeftButton(String info) throws AWTException{
    		java.awt.Robot robot = new Robot();
    		if(info.equals("down"))
				robot.mousePress(InputEvent.BUTTON1_MASK);				
    		else if(info.equals("release"))
    			robot.mouseRelease(InputEvent.BUTTON1_MASK);
    		else if(info.equals("up"))
    			robot.mouseRelease(InputEvent.BUTTON1_MASK);
    		else if(info.equals("click")){
    			robot.mousePress(InputEvent.BUTTON1_MASK);
    			robot.mouseRelease(InputEvent.BUTTON1_MASK);
    		}
    	}

根据不同的info  分别调用 鼠标的左键的 down or  up  或者是down and up 


其它的比如  鼠标的移动 右键  滑轮 的操作思路 都一样  


鼠标的移动是根据当前鼠标的左边 位置 进行加减计算

PointerInfo pinfo = MouseInfo.getPointerInfo();		//得到鼠标的坐标
			java.awt.Point p = pinfo.getLocation();
			mx=p.getX();	//得到当前电脑鼠标的坐标
			my=p.getY();
			java.awt.Robot robot;
			try {
				robot = new Robot();
//				System.out.println(mx+","+my);
//				System.out.println(px+","+py);
				robot.mouseMove((int)mx+(int)px,(int)my+(int)py);
			} catch (AWTException e) {
				e.printStackTrace();
			}


还有比如聊天功能  实现手机文字的输入 能发送到电脑的聊天框中

 当时是朋友给的思路 感觉非常巧妙  手机发送过来的文字 放在粘贴板中 然后调用粘贴功能 就行了

 通过 keyboard:message,内容,xxx

String args[]=info.split(",");
    		String type=null;
    		String cont=null;
    		String keystate =null;
    		java.awt.Robot robot = new Robot();
    		if(args.length==2){
    			type = args[0];
    			cont = args[1];
    		}
    		if(args.length==3){
    			type = args[0];
    			cont = args[1];
    			keystate = args[2];
    		}
    		
    		
    		if(type.equals("message")){
    			Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
    			cb.setContents(new StringSelection(cont), null);//调用粘贴板
    
    			
    			robot.keyPress(KeyEvent.VK_CONTROL);
    			robot.keyPress(KeyEvent.VK_V);
    			robot.keyRelease(KeyEvent.VK_CONTROL);
    			robot.keyRelease(KeyEvent.VK_V);
    		}

type等于keyboard    info由message,内容,xxx三部分组成   如果info第一部分是message

就调用系统的粘贴板  把发来的内容复制在粘贴板中 再调用系统的 CTRL+V 把内容给粘贴出来

就可以实现聊天内容的发送了


另外控制台信息的输入 不是CTRP+V  是鼠标右键+P   


-------------------------------------------------------------------------

注:由于当时水平有限  代码写的不规范 很多地方都是想到了 随手写的  所以请见谅


下载地址:http://download.youkuaiyun.com/detail/lujianing2011/5447591



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值