【发布时间】:2016-01-23 08:41:22
【问题描述】:
我试图用我的手机为我的笔记本电脑构建一个遥控器。 我编写了一个在我的笔记本电脑上运行的服务器应用程序,该远程应用程序用作服务器应用程序的客户端。 我想实现一个鼠标垫,问题是当我在“触摸板”上移动手指太快时,经过几次迭代,我在服务器端收到了读取时间。
服务器代码 final ExecutorService clientProcessingPool = Executors.newFixedThreadPool(20);
Runnable serverTask = new Runnable()
{
@Override
public void run()
{
ServerSocket serverSocket = null;
try
{
serverSocket = new ServerSocket(DEFAULT_PORT);
serverSocket.setReuseAddress(true);
_working = true;
while (_working)
{
Socket clientSocket = serverSocket.accept();
clientSocket.setSoTimeout(10000);
clientProcessingPool.submit(new ClientTask(clientSocket));
}
}
catch (IOException e)
{
System.err.println("Unable to process client request");
e.printStackTrace();
}
finally
{
try
{
if (serverSocket != null)
{
serverSocket.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
};
Thread serverThread = new Thread(serverTask);
serverThread.start();
private class ClientTask implements Runnable
{
private final Socket clientSocket;
private ClientTask(Socket clientSocket)
{
this.clientSocket = clientSocket;
}
@Override
public void run()
{
System.out.println("Got a client !");
try
{
System.out.println("Connected!");
DataOutputStream dOut = new DataOutputStream(clientSocket.getOutputStream());
DataInputStream dIn = new DataInputStream(clientSocket.getInputStream());
String request = dIn.readUTF();
parseRequest(request);
System.out.println("request=" + request);
dOut.writeUTF("Got the command");
dOut.flush(); // Send off the data
dIn.close();
dOut.close();
clientSocket.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
我想也许只有当从起始位置到结束位置的距离大于 STEPS(一个常数)时我才会发送请求,然后才发送请求。但我认为鼠标不会流畅地移动。
谢谢。
【问题讨论】:
标签: android sockets timeout touch