在解释我怀疑之前,我想告诉那里有三个"演员"在这种环境中:
当该人点击该程序中他正在远程使用的链接栏时,会有一个shell脚本将字符串发送到该人的计算机端口(例如1100)。要求是:从桌面重新接收此字符串后,将其发送到平板电脑。
那么,将这个字符串从桌面恢复到平板电脑的最佳方法是什么?
现在有一个正在监听1100端口的桌面计算机上运行的java守护程序。这个java应用程序是桌面计算机和平板电脑之间的中间人,但我认为可能有一种方法可以删除这个守护进程,只需使用平板电脑来重新启动创建套接字的计算机数据。
答案 0 :(得分:1)
您还可以在Android中实现Java套接字。就像Android上的桌面套接字一样,在端口上侦听,但是这将在本地访问,因为没有这种方法可以为Android设备分配静态可用IP。
另一个解决方案是socket.io Socket.io是我用过的最好的套接字库之一。在Node.js服务器和Android上实现socket.io只需连接到Node.js服务器,您可以将相同的字符串发送给所有连接的用户,无论是桌面还是Android。
答案 1 :(得分:1)
private class ServerThread extends Thread {
@Override
public void run() {
try {
serverSocket = new ServerSocket(portNumber);
while (true) {
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
LOGGER.error("Error on accept!");
}
// new thread for a client
new EchoThread(clientSocket).start();
}
}catch (Exception e) {
e.printStackTrace();
}
finally {
if (serverSocket != null) {
try {
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
public class EchoThread extends Thread {
protected Socket clientSocket;
BufferedReader br = null;
public EchoThread(Socket clientSocket) {
this.clientSocket = clientSocket;
}
public void run() {
try {
br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
} catch (IOException e) {
...
}
isConnected = true;
while (isConnected) {
try {
receivedMessage = br.readLine();
if (!Strings.isNullOrEmpty(receivedMessage)) {
....
}
else {
//sleep 0,1s
//TODO (ver): Thread.sleep(100);
}
} catch (Exception e) {
if (e instanceof IOException) {
}
else if (e instanceof JsonSyntaxException){
}
else {
try {
Thread.sleep(2000);
} catch (InterruptedException inte) {
inte.printStackTrace();
}
}
}
if (//yourmessagecondition){
isConnected = false;
}
}
if (!isConnected){
try {
br.close();
clientSocket.close();
}catch (IOException ioe){
ioe.printStackTrace();
}
}
}
}
希望这有帮助,它在这里工作......你可能在互联网上找到更简单/更简单的例子。 PS:如果您使用USB线与计算机应用程序通信,则可以使用" adb forward"命令,只是谷歌的一些例子,如果有帮助,接受这个答案;)