Java简单实现C/S鼠标控制—udp
服务器
package JFrameChat;
import java.awt.Robot;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket;
public class MouseSocket_UDP implements Runnable {
public static void main(String[] args) {
MouseSocket_UDP mt = new MouseSocket_UDP();
Thread th = new Thread(mt);
th.start();
}
@Override
public void run() {
try{
DatagramSocket dskt = new DatagramSocket(8888);
System.out.println("服务器启动成功!");
while(true) {
byte[] b = new byte[1024];
DatagramPacket dgp = new DatagramPacket(b,b.length);
dskt.receive(dgp);
String message = new String(dgp.getData()).trim();
System.out.println("say"+message);
String[] array = message.split("-");
int x = Integer.parseInt(array[0]);
int y = Integer.parseInt(array[1]);
Robot rbt = new Robot();
rbt.mouseMove(x, y);
}
}catch(Exception e) {
}
}
}
客户端
package JFrameChat;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.io.DataOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
import javax.swing.JFrame;
import JFrameChat.mouseTest.MymouseListener;
public class MouseClient_UDP extends JFrame {
public MouseClient_UDP() {
setBounds(300,100,700,500);
addMouseMotionListener(new MymouseListener());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
class MymouseListener extends MouseAdapter{
@Override
public void mouseMoved(MouseEvent e) {
int x = e.getX();
int y = e.getY();
System.out.println(x+"-"+y);
try{
DatagramSocket dskt = new DatagramSocket();
String str = x+"-"+y;
byte[] b = str.getBytes();
InetAddress ip = InetAddress.getByName("");
DatagramPacket dpkt = new DatagramPacket(b,b.length,ip,8888);
dskt.send(dpkt);
}catch(Exception e1) {
}
}
}
public static void main(String[] args) {
new MouseClient_UDP();
}
}
结果发现仍旧延迟很高?