首先是要有一个服务器端 开启端口监听 界面如下
输入端口号 点击开启 即可实现端口的监听
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