iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android之网络通信案例分析
  • 897
分享到

Android之网络通信案例分析

案例分析通信Android 2022-06-06 11:06:47 897人浏览 泡泡鱼
摘要

由于一个项目的需要,我研究了一下Android的网络通信方式,大体和java平台的很相似!  android平台也提供了很多的api供开发者使用,请按示例图: &nb

由于一个项目的需要,我研究了一下Android网络通信方式,大体和java平台的很相似!
 
android平台也提供了很多的api开发者使用,请按示例图:
 
首先,介绍一下通过Http工具进行通信,分get和post两种方式,两者的区别是:
1,post请求发送数据到服务器端,而且数据放在html header中一起发送到服务器url,数据对用户不可见,get请求是把参数值加到url的队列中,这在一定程度上,体现出post的安全性要比get高
2,get传送的数据量小,一般不能大于2kb,post传送的数据量大,一般默认为不受限制。
访问网络要加入权限 <uses-permission android:name="android.permission.INTERNET" />
下面是get请求HttpGet时的示例代码:
代码如下:
View Code
// 创建DefaultHttpClient对象
HttpClient httpClient = new DefaultHttpClient();
// 创建一个HttpGet对象
HttpGet get = new HttpGet(
"http://192.168.1.88:8888/foo/secret.jsp");
try
{
// 发送GET请求
HttpResponse httpResponse = httpClient.execute(get);
HttpEntity entity = httpResponse.getEntity();
if (entity != null)
{
// 读取服务器响应
BufferedReader br = new BufferedReader(
new InputStreamReader(entity.getContent()));
String line = null;
response.setText("");
while ((line = br.readLine()) != null)
{
// 使用response文本框显示服务器响应
response.append(line + "\n");
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}

post请求HttpPost的示例代码:
代码如下:
View Code
HttpClient httpClient=new DefaultHttpClient();
HttpPost post = new HttpPost(
"http://192.168.1.88:8888/foo/login.jsp");
// 如果传递参数个数比较多的话可以对传递的参数进行封装
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", name));
params.add(new BasicNameValuePair("pass", pass));
try
{
// 设置请求参数
post.setEntity(new UrlEncodedFORMEntity(
params, HTTP.UTF_8));
// 发送POST请求
HttpResponse response = httpClient
.execute(post);
// 如果服务器成功地返回响应
if (response.getStatusLine()
.getStatusCode() == 200)
{
String msg = EntityUtils
.toString(response.getEntity());
// 提示登录成功
Toast.makeText(HttpClientTest.this,
msg, 5000).show();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}

其次,介绍一下,使用java包的工具进行通信,也分get和post方式
默认使用get方式,示例代码:
代码如下:
View Code
try
{
String urlName = url + "?" + params;
URL realUrl = new URL(urlName);
// 打开和URL之间的连接或者HttpUrlConnection
URLConnection conn =realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "**");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; windows NT 5.1; SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(params);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null)
{
result += "\n" + line;
}
}
catch (Exception e)
{
System.out.println("发送POST请求出现异常!" + e);
e.printStackTrace();
}

从以上知,get请求只需要conn.connect(),post请求时,必须设置 conn.setDoOutput(true),conn.setDoinput(true),还必须获取URLConnection的输出流getOutputStream()
最后,使用套接字(soket)进行通信分为两种形式:面向连接的(tcp)和无连接的(udp 数据报)
tcp连接示例:
代码如下:
View Code
//服务器端
//创建一个ServerSocket,用于监听客户端Socket的连接请求
ServerSocket ss = new ServerSocket(30000);
//采用循环不断接受来自客户端的请求
while (true)
{
//每当接受到客户端Socket的请求,服务器端也对应产生一个Socket
Socket s = ss.accept();
OutputStream os = s.getOutputStream();
os.write("您好,您收到了服务器的消息!\n"
.getBytes("utf-8"));
//关闭输出流,关闭Socket
os.close();
s.close();
}
//客户端
Socket socket = new Socket("192.168.1.88" , 30000);
//将Socket对应的输入流包装成BufferedReader
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
//进行普通IO操作
String line = br.readLine();
show.setText("来自服务器的数据:" + line);
br.close();
socket.close();

udp连接示例:
代码如下:
View Code
服务器端:
try {
//创建一个DatagramSocket对象,并指定监听的端口号
DatagramSocket socket = new DatagramSocket(4567);
byte data [] = new byte[1024];
//创建一个空的DatagramPacket对象
DatagramPacket packet = new DatagramPacket(data,data.length);
//使用receive方法接收客户端所发送的数据
socket.receive(packet);
String result = new String(packet.getData(),packet.getOffset(),packet.getLength());
System.out.println("result--->" + result);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
客户端:
try {
//首先创建一个DatagramSocket对象
DatagramSocket socket = new DatagramSocket(4567);
//创建一个InetAddree
InetAddress serverAddress = InetAddress.getByName("192.168.1.104");
String str = "hello";
byte data [] = str.getBytes();
//创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个地址,以及端口号
DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,4567);
//调用socket对象的send方法,发送数据
socket.send(packet);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

以上,是我的总结,最近正在做一个类似网络视频客户端的作品,如果大家有人做过这方面,欢迎您们� �出建议和实现终端和服务器访问的其他方法。谢谢!
与大家共勉!!!
您可能感兴趣的文章:Android进程通信之Messenger和AIDL使用详解Android IPC机制利用Messenger实现跨进程通信深入理解Android中的Handler异步通信机制深入Android Handler与线程间通信ITC的详解Android Handler主线程和一般线程通信的应用分析Android 进程间通信实现原理分析Android Socket通信详解Android编程之客户端通过socket与服务器通信的方法Android单片机与蓝牙模块通信实例代码Android网络编程之UDP通信模型实例Android开发使用Messenger及Handler进行通信的方法示例


--结束END--

本文标题: Android之网络通信案例分析

本文链接: https://www.lsjlt.com/news/28164.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android网络通讯之OkHttp
    OkHttp是安卓上常用的网络请求框架,不止可以发送http请求,还可以发送socket请求等。 内置了连接池,减少了请求延迟支持缓存,减少重复的网络请求支持Cookie存储支持拦截器,可以对不同的请...
    99+
    2023-08-31
    okhttp android
  • Android网络封装的示例分析
    这篇文章给大家分享的是有关Android网络封装的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言:模拟用户登录,从安卓发送请求到服务端校验,再从服务端返回给安卓校验结果在AndroidManifest...
    99+
    2023-06-22
  • VB.NET网络应用之连通检测的示例分析
    小编给大家分享一下VB.NET网络应用之连通检测的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!VB.NET网络应用连通检测许多应用程序常常需要在程序中直...
    99+
    2023-06-17
  • Android网络监听和网络判断的示例分析
    本篇文章给大家分享的是有关Android网络监听和网络判断的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、在AndroidMainfest.xml中添加权限<...
    99+
    2023-06-21
  • Java网络编程之UDP网络通信详解
    目录1.UDP网络通信编程原理1.1 UDP网络通信编程介绍1.2 UDP网络通信编程的基本流程2.UDP网络通信编程案例1.UDP网络通信编程原理 1.1 UDP网络通信编程介绍 ...
    99+
    2024-04-02
  • android网络通信机制是什么
    Android网络通信机制是指Android系统中用于实现网络通信功能的一系列机制和API。Android系统提供了多种网络通信方式...
    99+
    2023-08-26
    android
  • docker容器之间通信的示例分析
    这篇文章将为大家详细讲解有关docker容器之间通信的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。容器之间的通信  # 执行一个容器,并分配一个名字给它 ...
    99+
    2023-06-17
  • Java之网络编程的示例分析
    小编给大家分享一下Java之网络编程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java基础之网络编程基本概念IP:每个电脑都有一个IP地址,在局域网...
    99+
    2023-06-20
  • WebSocket与实时通信的应用案例分析
    随着互联网的发展和技术的进步,实时通信在各种应用中变得越来越重要。而传统的基于HTTP的请求-响应模式往往无法满足实时通信的需求,因此WebSocket作为一种新的协议应运而生。WebSocket协议基于TCP,允许在客户端和服务器之间建立...
    99+
    2023-10-21
    WebSocket:WebSocket是一种协议 支持实时通信。关键词:WebSocket
  • Java网络编程之TCP通信完整代码示例
    一、概述  Socket类是Java执行客户端TCP操作的基础类,这个类本身使用代码通过主机操作系统的本地TCP栈进行通信。Socket类的方法会建立和销毁连接,设置各种Socket选项。  ServerSocket类是Java执行服务器端...
    99+
    2023-05-30
    java tcp socket
  • CocosCreator入门教程之网络通信
    网络通信概况 开发一个网络游戏,难免要处理网络通信。有几点问题需要注意: 1.服务端为了快速开发可能前期使用http通信,后面再改成websocket/socket。 2.同时存在h...
    99+
    2024-04-02
  • Python爬虫之网络请求实例分析
    本篇内容介绍了“Python爬虫之网络请求实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.IP代理某些网站会检测一段时间内某IP的...
    99+
    2023-06-30
  • Socket通信的示例分析
    这篇文章将为大家详细讲解有关Socket通信的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 建立网络通信...
    99+
    2023-06-27
  • 初学Android之网络封装实例
    前言: 模拟用户登录,从安卓发送请求到服务端校验,再从服务端返回给安卓校验结果 1.在AndroidManifest.xml文件中添加网络权限 <uses-permissi...
    99+
    2024-04-02
  • Vue.js之axios与网络传输的示例分析
    这篇文章主要介绍Vue.js之axios与网络传输的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!为何放弃vue-resource?Ajax 本身跟 Vue 并没有什么需要特...
    99+
    2024-04-02
  • Java之网络编程案例讲解
    Java基础之网络编程 基本概念 IP:每个电脑都有一个IP地址,在局域网内IP地址是可变的。 网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通...
    99+
    2024-04-02
  • Python网络爬虫实战案例之:7000
    一、前言 本文是《Python开发实战案例之网络爬虫》的第三部分:7000本电子书下载网络爬虫开发实战详解。配套视频课程详见51CTO学院请添加链接描述。 二、章节目录 3.1 业务流程3.2 页面结构分析:目录页3.3 页面结构分析:详情...
    99+
    2023-01-31
    爬虫 实战 案例
  • Android Animation之TranslateAnimation的示例分析
    这篇文章主要为大家展示了“Android Animation之TranslateAnimation的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Animation之Tr...
    99+
    2023-05-30
    android animation translateanimation
  • vue网络请求方案原生网络请求和js网络请求库的示例分析
    这篇文章主要介绍vue网络请求方案原生网络请求和js网络请求库的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 原生网络请求1. XMLHttpRequest(w3c标准)  &nbs...
    99+
    2023-06-21
  • Android中Notification.Builder通知的示例分析
    这篇文章将为大家详细讲解有关Android中Notification.Builder通知的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Android Notification.Builder通知...
    99+
    2023-05-30
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作