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

 更新时间:2018年01月23日 11:35:04   作者:飘走的我  
这篇文章主要介绍了Android基于TCP和URL协议的网络编程,结合实例形式分析了Android网络编程的通信原理、实现步骤与相关操作技巧,并附带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的服务器上。

——访问网络资源必须放在子线程中
——需要添加访问网络的权限
——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程序设计有所帮助。

相关文章

  • 详解在Python中创建条形图追赶动画

    详解在Python中创建条形图追赶动画

    动画是使可视化更具吸引力和用户吸引力的好方法。它帮助我们以有意义的方式展示数据可视化。Matplotlib是一个非常流行的数据可视化库,通常用于数据的图形表示以及使用内置函数的动画。本文将用Matplotlib绘制条形图追赶动画,需要的可以参考一下
    2022-03-03
  • python脚本之如何按照清晰度对图片进行分类

    python脚本之如何按照清晰度对图片进行分类

    这篇文章主要介绍了python脚本之如何按照清晰度对图片进行分类问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Python字符串逆序的实现方法【一题多解】

    Python字符串逆序的实现方法【一题多解】

    今天小编就为大家分享一篇关于Python字符串逆序的实现方法【一题多解】,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Pandas执行SQL操作的实现

    Pandas执行SQL操作的实现

    使用SQL语句能够完成对table的增删改查操作,Pandas同样也可以实现SQL语句的基本功能,本文就来介绍一下,具有一档的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Python中FTP服务与SSH登录暴力破解的实现

    Python中FTP服务与SSH登录暴力破解的实现

    本文学习了如何通过 Python 脚本进行 FTP、SSH 服务的登录爆破,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Python中的Django基本命令实例详解

    Python中的Django基本命令实例详解

    这篇文章主要介绍了Python之Django基本命令 ,需要的朋友可以参考下
    2018-07-07
  • Python中的datetime包与time包包和模块详情

    Python中的datetime包与time包包和模块详情

    这篇文章主要介绍了Python中的datetime包与datetime包和模块详情,文章围绕主题展开详细内容,具有一的的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-02-02
  • Python自动修改电脑静态IP地址的实现示例

    Python自动修改电脑静态IP地址的实现示例

    通过Python自动修改电脑的静态IP地址可以极大地提高我们的工作效率,减少手动修改IP地址带来的错误,本文就来介绍一下Python自动修改电脑静态IP地址的实现示例,感兴趣的可以了解一下
    2023-11-11
  • python辗转相除法求最大公约数和最小公倍数的实现

    python辗转相除法求最大公约数和最小公倍数的实现

    这篇文章主要介绍了python辗转相除法求最大公约数和最小公倍数的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python之用户输入的实例

    Python之用户输入的实例

    今天小编就为大家分享一篇Python之用户输入的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论