Android基于TCP和URL协议的网络编程示例【附demo源码下载】
本篇章节讲解Android基于TCP和URL协议的网络编程。分享给大家供大家参考,具体如下: 手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的。它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态。因此网络支持对于手机应用非常重要。 Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建立基于UDP协议的网络通信。Android也支持JDK提供的URL,URLConnection等网络通信API。Android还内置了HttpClient,和HttpUrlConnection这样可以非常方便地发送HTTP请求,并获取Http响应。 ――基于TCP协议的编程 使用Socket,ServerSocket编程: 使用多线程,handler机制完成网络编程. 注意:由于手机无线上网的IP地址通常都是由移动运营公司动态分配的,一般不会有自己固定的IP地址,因此很少在手机上运行服务器端,服务器端通常运行在有固定IP的服务器上。 ――访问网络资源必须放在子线程中 ――使用URL进行网络编程 ――使用URL访问网络资源 URL对象代表统一资源定位符。它是指向互联网中的资源。该资源可以使简单的文件或目录。也可以是对更复杂的对象的引用。 URL的格式:protocol://host:port/resourceName 可以使用构造器创建URL对象,一旦获得URL对象,可以调用如下的方法访问该URL对应的资源:
代码编写: 1.服务器的编写: 使用Socket和ServerSocket: public class serverTest { public static void main(String[] args) { try { ServerSocket serverSocket=new ServerSocket(7777); System.out.println("服务器已经在7777端口上启动了"); while (true) { //有阻塞的功能,拿不到socket下面的方法也不会执行 Socket socket=serverSocket.accept(); System.out.println("有客户端发出请求了"); new ServerThread(socket).start(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ServerThread继承Thread: public class ServerThread extends Thread{ private Socket socket; OutputStream outputStream; public ServerThread(Socket socket) { this.socket=socket; } @Override public void run() { // TODO Auto-generated method stub try { outputStream=socket.getOutputStream(); outputStream.write(("服务器端的时间"+new Date()).getBytes("UTF-8")); outputStream.flush(); outputStream.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } super.run(); } } 2.客户端的编写: 关键代码: public void click(View view){ new Thread(){ public void run() { try { //客户端从服务端获取数据 Socket client=new Socket("169.254.244.141",7777); BufferedReader bufferedReader= new BufferedReader (new InputStreamReader (client.getInputStream())); String text=bufferedReader.readLine(); //tv.setText(text); //线程复用 Message msg= Message.obtain(); msg.what=0x123; msg.obj=text; handler.sendMessage(msg); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }; }.start(); } 从服务器端得到时间~ 效果图如下: 附:完整实例代码点击此处本站下载。 更多关于Android相关内容感兴趣的读者可查看本站专题:《Android通信方式总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》 希望本文所述对大家Android程序设计有所帮助。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |