Java android屏幕作为intranet中的pc触摸板
我想用android屏幕作为内联网中的pc触摸板, 所以我应该使用哪种协议,以及如何用java创建pc服务器 帮帮我。Java android屏幕作为intranet中的pc触摸板,java,android,protocols,Java,Android,Protocols,我想用android屏幕作为内联网中的pc触摸板, 所以我应该使用哪种协议,以及如何用java创建pc服务器 帮帮我。 谢谢它很容易使用。在内部网中使用UDP进行连接,因为它更快、无连接,因此无需刷新缓冲区并等待传输。应用程序应该实时运行,因此需要UDP套接字连接 在服务器端java中,只需创建一个带有端口号的数据报包服务器。仅使用字节流以实现更快的连接 共享了一个示例代码。这里我使用了8字节的数据包大小: public class Server extends Thread { Linked
谢谢它很容易使用。在内部网中使用UDP进行连接,因为它更快、无连接,因此无需刷新缓冲区并等待传输。应用程序应该实时运行,因此需要UDP套接字连接 在服务器端java中,只需创建一个带有端口号的数据报包服务器。仅使用字节流以实现更快的连接 共享了一个示例代码。这里我使用了8字节的数据包大小:
public class Server extends Thread
{
LinkedList<String[]> queue = new LinkedList<String[]>();
public static void main(String[] args)
{
new Server().start();
}
@Override
public void run()
{
try
{
int server_port = 12345;
byte[] message = new byte[8];
DatagramPacket p = new DatagramPacket(message, message.length);
DatagramSocket s = new DatagramSocket(server_port);
Robot r = new Robot();
PointerInfo a = MouseInfo.getPointerInfo();
Point b = a.getLocation();
int curx = (int) b.getX();
int cury = (int) b.getY();
int prex = 0;
int prey = 0;
while (true)
{
p = new DatagramPacket(message, 8);
s.receive(p);
System.out.println(p.getAddress());
int x = byteArrayToInt1(message);
int y = byteArrayToInt2(message);
if (x == 0 && y == 0)
{
prex = 0;
prey = 0;
a = MouseInfo.getPointerInfo();
b = a.getLocation();
curx = (int) b.getX();
cury = (int) b.getY();
r.mouseMove(curx, cury);
}
else
{
curx = curx - (prex - x);
cury = cury - (prey - y);
r.mouseMove(curx, cury);
prex = x;
prey = y;
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
//use reverse of this logic in your android to convert co-ordinate int to byte[]
public static final int byteArrayToInt1(byte[] b)
{
return (b[0] << 24)
+ ((b[1] & 0xFF) << 16)
+ ((b[2] & 0xFF) << 8)
+ (b[3] & 0xFF);
}
public static final int byteArrayToInt2(byte[] b)
{
return (b[4] << 24)
+ ((b[5] & 0xFF) << 16)
+ ((b[6] & 0xFF) << 8)
+ (b[7] & 0xFF);
}
}
公共类服务器扩展线程
{
LinkedList队列=新建LinkedList();
公共静态void main(字符串[]args)
{
新服务器().start();
}
@凌驾
公开募捐
{
尝试
{
int server_port=12345;
字节[]消息=新字节[8];
DatagramPacket p=新的DatagramPacket(message,message.length);
DatagramSocket s=新的DatagramSocket(服务器\端口);
机器人r=新机器人();
PointerInfo a=MouseInfo.getPointerInfo();
点b=a.getLocation();
int curx=(int)b.getX();
int cury=(int)b.getY();
int-prex=0;
int=0;
while(true)
{
p=新数据包(消息,8);
s、 接收(p);
System.out.println(p.getAddress());
int x=byteArrayToInt1(消息);
int y=byteArrayToInt2(消息);
如果(x==0&&y==0)
{
prex=0;
猎物=0;
a=MouseInfo.getPointerInfo();
b=a.getLocation();
curx=(int)b.getX();
cury=(int)b.getY();
r、 mouseMove(curx,cury);
}
其他的
{
curx=curx-(prex-x);
cury=cury-(猎物-y);
r、 mouseMove(curx,cury);
prex=x;
猎物=y;
}
}
}
捕获(例外e)
{
e、 printStackTrace();
}
}
//在android中使用与此相反的逻辑将坐标int转换为字节[]
公共静态final int byteArrayToInt1(字节[]b)
{
return(b[0]@San-您是否实施了android端活动或程序,用于向服务器发送屏幕包?表示客户端程序?