Java android屏幕作为intranet中的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

我想用android屏幕作为内联网中的pc触摸板, 所以我应该使用哪种协议,以及如何用java创建pc服务器

帮帮我。
谢谢

它很容易使用。在内部网中使用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端活动或程序,用于向服务器发送屏幕包?表示客户端程序?