Android 的网络编程

2014-11-24 09:12:50 · 作者: · 浏览: 0

基于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


  设置标志 


    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();


流程记录就到此为止。