首页 > 编程 > Python > 正文

Android基于TCP和URL协议的网络编程示例【附demo源码下载】

2019-11-25 15:18:46
字体:
来源:转载
供稿:网友

本文实例讲述了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的服务器上。

――访问网络资源必须放在子线程中
――需要添加访问网络的权限
――IP地址,不能写成127.0.0.1.
――使用Handler机制解析返回的数据
――注意解决乱码问题

――使用URL进行网络编程

――使用URL访问网络资源

URL对象代表统一资源定位符。它是指向互联网中的资源。该资源可以使简单的文件或目录。也可以是对更复杂的对象的引用。

URL的格式:protocol://host:port/resourceName

可以使用构造器创建URL对象,一旦获得URL对象,可以调用如下的方法访问该URL对应的资源:

String getFile():获取URL的资源名
String getHost():获取URL的主机名
String getPath():获取URL的路径部分
int getPort():获取URL的端口号
String getProtocol():获取URL的协议名称
String getQuery():获取URL的查询字符串部分
InputStream url.openStream():打开URL的连接,返回一个读取该资源的InputStream。

代码编写:

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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表