【求助】android系统如何简单地访问服务器?
Android的网络编程分为2种:基于http协议的,和基于socket的。Socket一般应用于社交聊天的应用中,这里关联的比较少就不讲了,我们来说说基于HTTP协议的编程。
基本原理 : 它的工作原理特别的简单,就是客户端向服务器发出一条HTTP 请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。
HTTP请求:HttpURLConnection 和 HttpClient
服务器端返回客户端的内容:
1)以HTML代码的形式返回。
2)以XML字符串的形式返回。返回的数据需要通过XML解析(SAX、DOM,Pull,等)器进行解析。
3)以json对象的方式返回。
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();
}
}
手机连接上WiFi却无法连接服务器的原因有:
1、WiFi本身问题,可能WiFi未正常连接,导致无法上网。
2、路由器问题,可能路由器过热或者损坏。
3、可能宽带欠费,导致无法上网。
4、WiFi名字包含中文,导致部分手机无法连接上网。
5、手机系统问题,可能系统出现了问题,导致连接上了WiFi却无法上网。
建议解决办法:
1、使用其他手机或设备连接WiFi试试能否上网,排除WiFi本身问题;
2、重启一下路由器试试,或者将路由器恢复一下出厂设置,然后重新拨号上网,并根据设置向导重新设置WiFi,或者更换新路由器再进行拨号连接上网;
3、联系一下宽带客服,确认宽带账号是否有异常,如欠费,充值一下宽带,然后再拨号连接试试;
4、如WiFi名字包含中文,建议修改为英文或者英文加数字的组合再进行连接;
5、如以上原因都排除,那么久很有可能是电脑系统问题了,建议恢复一下出厂设置。看看能否解决问题。
linux 可以几年不重启,因为
1、耗内存程序少,不容易出现内存问题而造成的重启
2、不重启的那是没有开桌面,仅仅用控制台的话省去好多消耗,(比如图形处理,动画处理)
3、软件垃圾,你可能是装的软件有不协调的地方,linux 不会弄那些乱七八糟的东西
4、android是精简的linux,很多东西精简掉了,(也有可能是手机商故意把实用的搞掉,你一个手机用十年他还要不要活)
方法如下:
1、较新版本的Android系统默认在设置是不显示开发人员选项的,因此进入设置->关于手机->多次点击版本号(一定次数之后设置中出现开发人员选项),开发人员选择出现之后就无需再设置了。
2、设置->开发人员选项(开启)->选择USB调试,之后一般会出现允许连接调试和安装调试证书的选项,都选择是。大部分情况下到这个时候Eclipse开发环境就能够识别手机并可以进行软件的编译下载安装与调试。
3、USB连接方式需要选择正确,如下图四个选项中,只有选中PC助手方式,才可以被电脑和开发环境识别。
4、如果还不能识别有的时候是将Android设备与PC机通过USB接口相连时未能正确,可以尝试使用刷机软件如甜椒刷机助手,启动软件后连接Android设备,如果设备没有正确安装或者驱动程序版本不正确,它会自动下载和安装合适的驱动程序。
5、还有就是Manifestxml中minSdkVersion的的API level不能高于设备上Android系统版本对应的API level。如下图,对应于Android442对应的API 19,如果minSdkVersion>=20,则Android Device Chooser中无法显示设备。
6、还有Eclipse开发环境通过adb连接调试Android设备,有一些刷机软件也会运行adb程序,造成与开发环境的adb调试器冲突,需要关闭刷机软件,杀死所有adb进程重启开发环境。
温馨提示:
1、正确连接设备,打开USB调试。
2、正确安装设备驱动。
3、Sdk最低版本号设置不能高于设备的系统版本。
0条评论