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(); 读完了记得关闭connection urlConn.disconnect();
from:http://www.1000phone.net/forum.php?mod=viewthread&tid=4834&highlight=%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B |
Android 说说网络编程
最新推荐文章于 2021-06-08 16:27:08 发布