Android的网络编程分为2种:基于socket的,和基于http协议的。
基于socket的用法
服务器端:
先启动一个服务器端的socket ServerSocket svr = new ServerSocket(8989);
开始侦听请求 Socket s = svr.accept();
取得输入和输出 DataInputStream dis = new DataInputStream(s.getInputStream());
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
Socket 的交互通过流来完成,即是说传送的字节流,因此任何文件都可以在上面传送。谁打开的记得要关上。
用DataInputStream/DataOutputStream来进行包装是因为我们想要他们对基本数据类型的读写功能readInt(),writeInt(),readUTF(),writeUTF()等等。
客户端:
发起一个socket连接 Socket s = new Socket("192.168.1.200",8989);
取得输入和输出 DataInputStream dis = new DataInputStream(s.getInputStream());
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
之后就可以相互通信了。谁打开的记得要关上。
基于Http协议
一般是发送请求到某个应用服务器。此时需要用到HttpURLConnection
先取得HttpURLConnection urlConn = new URL("http://www.google.com").openConnection();
设置标志
urlConn.setDoOutput(true); urlConn.setDoInput(true);//post的情况下需要设置DoOutput为true
urlConn.setRequestMethod("POST");
urlConn.setUseCache(false);//设置是否用缓存
urlConn.setRequestProperty("Content-type","application/x-www-form-urlencoded");//设置content-type
获得输出流,便于想服务器发送信息。
DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());
望流里面写请求参数
dos.writeBytes("name="+URLEncoder.encode("chenmouren","gb2312");
dos.flush();dos.close();//发送完后马上关闭。
获得输入流,取数据
BufferReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
reader.readLine();//用 !=null来判断是否结束
reader.close();
分享到:
相关推荐
再来说说Socket,它是TCP/IP协议的基础,提供了低级别的网络通信接口。在Android中,如果需要进行自定义协议或者需要更精细的控制网络通信,如WebSocket通信,那么Socket就显得尤为重要。使用Socket,你可以直接建立...
iceskysl: 说说我招聘android技术人员的思路 史上最全面的面试资料(包含所有IT大公司) 快到毕业的季节了,积累了一些andorid面试题,希望能帮助同学 android面试全跟踪,最真实的android面试经历 揭开应用推广...
这通常涉及到HTTP请求和网络编程。在Android中,可以使用`HttpURLConnection`或者第三方库如Volley、Retrofit、OkHttp等来发送POST请求,将图片以二进制流的形式上传。为了提高用户体验,通常我们会将上传操作放在...
(当然你可以在Android4.0以前的手机里在主线程请求网络,我最早开发的时候,用的手机比较古老。。。) 在Android中你可以随意创建线程,于是就会造成线程不可控,内存泄漏,创建线程消耗资源,线程太多了消耗资源等...
首先,Android应用开发需要使用Java或Kotlin作为主要编程语言,通过Android Studio IDE进行项目构建。在创建一个新的Activity或者Fragment时,我们需要导入QQ空间SDK,这是腾讯提供的用于与QQ空间进行交互的开发工具...
RxJava是一种响应式编程库,它可以将数据处理和事件驱动的编程模型结合在一起,使得代码更加简洁、易读,并且易于测试。在这个库中,使用RxJava可以帮助开发者更好地管理图片选择过程中的异步操作,如文件读取、裁剪...
再来说说`findViewById`,这是Android UI编程中一个重要的方法,用于在布局文件中查找指定ID的View组件。在Activity或Fragment中调用此方法,可以获取到对应的View对象,然后对其设置属性、监听事件等。然而,随着...
综上所述,"Android在线商城项目"涵盖了许多关键的Android开发技术,从用户交互到数据管理,再到网络通信,这些都是构建高效、稳定且用户体验良好的移动应用所必备的技能。开发者通过实践这些技术,不仅可以提升自己...
总的来说,实现仿QQ发表说说、上传照片及弹出框效果,开发者需要掌握Android的UI设计、事件监听、动画处理、图片处理以及网络通信等多个方面的知识。通过这样的实践,开发者可以更深入地理解Android应用开发的流程和...
再来说说BroadcastReceiver,它是Android系统广播事件的接收者。当系统或应用发送广播时,注册了对应IntentFilter的BroadcastReceiver会接收到通知并执行相应的操作。例如,电池状态改变、网络连接状态更新等系统...
本篇文章将深入探讨一款基于Android平台的贪吃蛇游戏的源码数据库,揭示其背后的编程逻辑和技术实现。我们将主要围绕Java、安卓开发、微信小程序以及SpringBoot这四个技术标签展开讨论。 首先,我们要理解贪吃蛇...
总的来说,这个毕业设计项目提供了实践Android应用开发的绝佳案例,涉及了Java编程、Android组件使用、数据库操作以及用户界面设计等多个知识点。对于想要深入学习Android开发或者提升自己编程技能的学生来说,这是...
总的来说,开发手机QQ空间说说功能涉及到移动开发、网络编程、用户界面设计等多个方面,而压缩包中的代码和注释提供了学习和理解这些技术的实践案例。对于想要深入学习移动应用开发,特别是社交功能实现的开发者来说...
6. **网络编程**: 通过网络编程技术,实现了服务器与客户端之间的高效数据交换,确保了信息传递的准确性和及时性。 #### 需求分析 针对当前小区物业管理存在的问题,“生活家”系统重点解决了以下几个方面的需求:...
在Android应用开发中,Fragment是Activity的一个模块化组件,它允许开发者在单个活动中展示多个视图或功能。"Fragment实现懒加载"是指在Fragment中采用一种策略,使得其内容只有在真正需要显示时才进行加载,从而...
再来说说"百度地图"的代码,这涉及到Android中地图API的使用。开发者需要集成百度地图SDK,学习如何在应用中显示地图、设置标记、获取地理位置信息等。这将引导你深入理解Google Maps API或者第三方地图服务的集成...
网页版QQ签到加速源码、QQ音乐等级加速源码、CF活动一键领取源码以及QQ手游等级加速,这些都是互联网上...同时,学习和研究这些源码可以加深对网络编程、自动化技术的理解,对于IT从业者来说,是一种很好的实践和提升。
再来说说网络辅助工具类,这类工具通常包括处理HTTP请求、响应、网络状态检测等功能。例如,你可以创建一个工具类,提供异步或同步的HTTP请求方法,支持GET、POST等多种请求方式,并能处理返回的JSON或XML数据。此外...
数据绑定是Google推出的一种框架,它简化了Android UI的构建,通过声明式编程方式将UI组件与数据源直接关联起来。这种技术允许开发者在XML布局文件中直接定义数据绑定表达式,减少代码量,提高代码可读性和可维护性...