当前位置:首页 » 云服务器 » android如何连接本地服务器

android如何连接本地服务器

发布时间: 2024-08-13 21:46:11

❶ android怎么和服务器通讯

基本上是2种方式, HTTP 协议,或者 用Socket。
这2种方式都是需要服务器端的IP地址。HTTP协议的话,有多种接口可以调用你可以用java类库封装的HttpConnection 或者用Apach的开源项目的 HttpGet 或者HttpPost ,服务器端 需要 编写 Serlvet来响应客户端的请求。
Sokcet 的话, 就是 服务器端 不断监听 双方约定好的端口号,客户端通过服务器IP去请求连接,经过握手之后,连接成功,得到Socket 的输入输出流,直接操作即可。

❷ 如何实现android和服务器长连接

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();
acceptThread.start();
}

}

class AcceptThread extends Thread
{
@Override
public void run()
{
while (isStarted)
{
try
{

// 阻塞接收
Socket client = serverSocket.accept();
initClientSocket( client );
}
catch (Exception e)
{
// TODO: handle exception
}

}
super.run();
}
}

private void initClientSocket(Socket client)
{

boolean isRunnable = true;
/**
* 重置
**/
if (cInputStream != null)
{
try
{
cInputStream.close();
cInputStream = null;
}
catch (IOException e)
{
e.printStackTrace();
}
}

if (clientSocket != null)
{
try
{
clientSocket.close();
clientSocket = null;
}
catch (Exception e)
{
// TODO: handle exception
}
}

String resultStr = "";
clientSocket = client;
try
{
cInputStream = new DataInputStream( clientSocket.getInputStream() );

if (isRunnable)
{
StringBuffer sb1 = new StringBuffer();
int ss;
while ((ss = cInputStream.read()) != -1)
{
sb1.append( (char) ss );
}
resultStr = sb1.toString();
//发送广播
Intent intent = new Intent();
intent.putExtra( "str", resultStr );
intent.setAction( "com.jone.receiver" );
sendBroadcast( intent );
// Message msg = ((MainActivity)getApplicationContext()).handler.obtainMessage();
// msg.obj = resultStr;
// ((MainActivity)getApplicationContext()).handler.sendMessage( msg );

}

}
catch (Exception e)
{
// TODO Auto-generated catch block
isRunnable = false;
e.printStackTrace();
}

}

❸ 如何实现android和服务器的长连接

转载 这种功能实际上就是数据同步,同时要考虑手机本身、电量、网络流量等等限制因素,所以通常在移动端上有一下两个解决方案:

1.一种是定时去server查询数据,通常是使用HTTP协议来访问web服务器,称Polling(轮询);

2.还有一种是移动端和服务器建立长连接,使用XMPP长连接,称Push(推送)。

从耗费的电量、流量和数据延迟性各方面来说,Push有明显的优势。但是使用Push的缺点是:

对于客户端:实现和维护相对成本高,在移动无线网络下维护长连接,相对有一些技术上的开发难度。

对于服务器:如何实现多核并发,cpu作业调度,数量庞大的长连接并发维护等技术,仍存在开发难点。

在讲述Push方案的原理前,我们先了解一下移动无线网络的特点。

移动无线网络的特点:

因为 IP v4 的 IP 量有限,运营商分配给手机凳裤终端的 IP 是运营商内网的 IP,手机要连接 Internet,就需要通过运营商的网关做一个网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关需要维护一个外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器通讯

GGSN(Gateway GPRS

Support Node 网关GPRS支持结点)模块就实现了NAT功能。

因为大部分移动无线网络运营商都是为了减少网关的NAT映射表的负荷,所以如果发现链路中有一段时间没有数据通讯时,会删除其对应表,造成链路中断。(关于NAT的作用及其原理可以查看我的另一篇博文:关于使用UDP(TCP)跨局域网,NAT穿透的心得)

Push在Android平台上长连接的实现:

既然我们知道我们移动端要和Internet进行通信,必须通过运营商的网关,所以,为了不让NAT映射表失效,我们需要定时向Internet发送数据,因为只是为了不然NAT映射表失效,所以只需发送长度为0的数据即可。

这时候就要用到定时器,在android系统上,定时器通常有一下两种:

1.java.util.Timer

2.android.app.AlarmManager

分析:

Timer:可以按照计划或者时间周期来执行相关的任务。但是Timer需要用WakeLock来让CPU保持唤醒状态,才能保证任务的执行,这样子会消耗大量流量;当CPU处于休眠的时候,就不能唤醒执行任务,所以应用于移动端明显是不合适。

AlarmManager:AlarmManager类是属于android系统封装好来管理RTC模块的管理类。悔粗销这里就涉及到RTC模块,要更好地了解两者的区别,就要明白两者真正的区别。

RTC(Real- Time Clock)实时闹钟在一个嵌入式系统中,通常采用RTC

来提供可靠的系统时间,包括时分秒和年月日等;而且要求在系统处于关碧游机状态下它也能够正常工作(通常采用后备电池供电),它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32.768KHz

晶体和电阻电容等。(如果对这方面感兴趣,可以自己查阅相关资料,这里就说个大概)

好了,回来正题。所以,AlarmManager又称全局定时闹钟。这意味着,当我用使用AlarmManager来定时执行任务,CPU可以正常地休眠,只有在执行任务是,才唤醒CPU,这个过程是很短时间的。

下面简单来说明其使用:

1.类似于Timer功能:

//获得闹钟管理器

AlarmManager

am = (AlarmManager)getSystemService(ALARM_SERVICE);

//设置任务执行计划

am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000,

sender);//从firstTime才开始执行,每隔5秒再执行

2.实现全局定时功能:

//获得闹钟管理器

AlarmManager

am = (AlarmManager)getSystemService(ALARM_SERVICE);

//设置任务执行计划

am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,

5*1000, sender);//从firstTime才开始执行,每隔5秒再执行

总结:在android客户端使用Push推送时,应该使用AlarmManager来实现心跳功能,使其真正实现长连接。

❹ Android 如何与本地服务器进行连接,进行本地服务验证

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

❺ android客户端是如何与电脑的服务器端相连接,发送请求、得到服务器的数据、又如何处理这些数据呢

首先,你的电脑必须在某个端口提供了服务

然后,客户端通过服务建立连接

最后,发送http请求,然后得到响应。


下面给一段最简单的代码:

//Get方式请求
publicstaticvoidrequestByGet()throwsException{
Stringpath="https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
//新建一个URL对象
URLurl=newURL(path);
//打开一个HttpURLConnection连接
HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection();
//设置连接超时时间
urlConn.setConnectTimeout(5*1000);
//开始连接
urlConn.connect();
//判断请求是否成功
if(urlConn.getResponseCode()==HTTP_200){
//获取返回的数据
byte[]data=readStream(urlConn.getInputStream());
Log.i(TAG_GET,"Get方式请求成功,返回数据如下:");
Log.i(TAG_GET,newString(data,"UTF-8"));
}else{
Log.i(TAG_GET,"Get方式请求失败");
}
//关闭连接
urlConn.disconnect();
}

具体看代码注释,一般都是http请求,android当中也有很多http的请求框架,volley之类的。

❻ android开发中,如何连接服务器,从服务器读取到数据

服务器端生成JSON:

使用HttpURLConnection连接,通过JSON格式传递对象数据

	URLurl=newURL(urlpath);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
InputStreaminStream=conn.getInputStream();
=newByteArrayOutputStream();
byte[]data=newbyte[1024];
intlen=0;
while((len=inStream.read(data))!=-1){
outStream.write(data,0,len);
System.out.println(len);
}
inStream.close();
byte[]rlt=outStream.toByteArray();
returnnewString(rlt);

❼ android手机访问服务器, 手机和服务器间怎么实现

手机可以直接访问服务器呀,只要APN设置好。能上网就行。其实和电脑一样,IP访问,只不过是移动网络帮你以ip方式访问公网服务器地址

❽ 【求助】android系统如何简单地访问服务器

Android的网络编程分为2种:基于http协议的,和基于socket的。Socket一般应用于社交聊天的应用中,这里关联的比较少就不讲了,我们来说说基于HTTP协议的编程。

基本原理 : 它的工作原理特别的简单,就是客户端向服务器发出一条HTTP 请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。

HTTP请求:HttpURLConnection 和 HttpClient

服务器端返回客户端的内容:
1)以HTML代码的形式返回。
2)以XML字符串的形式返回。返回的数据需要通过XML解析(SAX、DOM,Pull,等)器进行解析。
3)以json对象的方式返回。

热点内容
百度云解压密码忘记 发布:2024-11-26 14:35:36 浏览:863
最差拟合算法 发布:2024-11-26 14:21:17 浏览:739
指令式编程 发布:2024-11-26 14:16:24 浏览:19
阿里云ftp修改密码 发布:2024-11-26 14:12:11 浏览:617
mt4服务器ip 发布:2024-11-26 13:31:56 浏览:867
虚拟机编译得到bin文件 发布:2024-11-26 13:31:00 浏览:419
javaenumofenum 发布:2024-11-26 13:20:09 浏览:922
脚本中ge 发布:2024-11-26 13:14:24 浏览:376
安卓的gps怎么开 发布:2024-11-26 13:14:18 浏览:86
砍人脚本 发布:2024-11-26 13:14:15 浏览:257