android如何访问远程服务器,第1张

1、现在电脑上安装Teamviewer,运行该软件,会生成ID和密码,

如果要每次开机都能远程访问,可以设置无人值守访问,如下图:

2、安卓手机端也安装Teamviewer

3、打开手机端,输入ID和密码就可以直连了,如下图:

条件是socket协议。

WebSocket是跟随HTML5一同提出的,所以在兼容性上存在问题,这时一个非常好用的库就登场了——Socketio。

socketio封装了websocket,同时包含了其它的连接方式,你在任何浏览器里都可以使用socketio来建立异步的连接。socketio包含了服务端和客户端的库,如果在浏览器中使用了socketio的js,服务端也必须同样适用。

socketio是基于Websocket的Client-Server实时通信库。

socketio底层是基于engineio这个库。engineio为socketio提供跨浏览器/跨设备的双向通信的底层库。engineio使用了Websocket和XHR方式封装了一套socket协议。在低版本的浏览器中,不支持Websocket,为了兼容使用长轮询(polling)替代。

1:android客户端通过service在后台通过servreScoket不断的accept,一旦有相应的socket到达,则启动一个线程去处理

2::在线程中处理完返回给我们android客户端的消息或任务之后,要将这种结果表现在ui上,这个步骤方法就比较多了,例如你可以发一个广播来通知ui,或者你可以通过一个static的handler来处理

service中的关键代码

private void startSocketServer()

{

if (!isStarted)

{

try

{

serverSocket = new ServerSocket( 6661 );

isStarted = true;

}

catch (Exception e)

{

// TODO: handle exception

}

// 启动线程处理

AcceptThread acceptThread = new AcceptThread();

acceptThreadstart();

}

}

class AcceptThread extends Thread

{

@Override

public void run()

{

while (isStarted)

{

try

{

// 阻塞接收

Socket client = serverSocketaccept();

initClientSocket( client );

}

catch (Exception e)

{

// TODO: handle exception

}

}

superrun();

}

}

private void initClientSocket(Socket client)

{

boolean isRunnable = true;

/

重置

/

if (cInputStream != null)

{

try

{

cInputStreamclose();

cInputStream = null;

}

catch (IOException e)

{

eprintStackTrace();

}

}

if (clientSocket != null)

{

try

{

clientSocketclose();

clientSocket = null;

}

catch (Exception e)

{

// TODO: handle exception

}

}

String resultStr = "";

clientSocket = client;

try

{

cInputStream = new DataInputStream( clientSocketgetInputStream() );

if (isRunnable)

{

StringBuffer sb1 = new StringBuffer();

int ss;

while ((ss = cInputStreamread()) != -1)

{

sb1append( (char) ss );

}

resultStr = sb1toString();

//发送广播

Intent intent = new Intent();

intentputExtra( "str", resultStr );

intentsetAction( "comjonereceiver" );

sendBroadcast( intent );

// Message msg = ((MainActivity)getApplicationContext())handlerobtainMessage();

// msgobj = resultStr;

// ((MainActivity)getApplicationContext())handlersendMessage( msg );

}

}

catch (Exception e)

{

// TODO Auto-generated catch block

isRunnable = false;

eprintStackTrace();

}

}

public boolean isConnByHttp(){        boolean isConn = false;

        URL url;

        HttpURLConnection conn = null;        try {

            url = new URL("ttp://wldaishu001com/YHDriverasmx");

            conn = (HttpURLConnection)urlopenConnection();

            connsetConnectTimeout(10005);            if(conngetResponseCode()==200){

                isConn = true;

            }

            

        } catch (MalformedURLException e) {            // TODO Auto-generated catch block            eprintStackTrace();

        }catch (IOException e) {            // TODO Auto-generated catch block            eprintStackTrace();

        }finally{

            conndisconnect();

        }        return isConn;

    }

在服务端写一个socket,用死循环的方式监听本机的某个端口,如30000,用来接收登录的输入流,在android端点击登录时创建一个对应该端口的socket,把登录信息写到输出流里即可。服务器端就能判断出是否允许登录

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » android如何访问远程服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情