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


Posted in Python onJanuary 23, 2018

本文实例讲述了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基于TCP和URL协议的网络编程示例【附demo源码下载】

附:完整实例代码点击此处本站下载

希望本文所述对大家Android程序设计有所帮助。

Python 相关文章推荐
python中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
django定期执行任务(实例讲解)
Nov 03 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
如何使用Python抓取网页tag操作
Feb 14 Python
Python sqlite3查询操作过程解析
Feb 20 Python
python 弧度与角度互转实例
Apr 15 Python
没编程基础可以学python吗
Jun 17 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 Python
Python实现PS图像抽象画风效果的方法
Jan 23 #Python
matplotlib作图添加表格实例代码
Jan 23 #Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 #Python
Django实现组合搜索的方法示例
Jan 23 #Python
50行Python代码实现人脸检测功能
Jan 23 #Python
Python基于OpenCV实现视频的人脸检测
Jan 23 #Python
Python求出0~100以内的所有素数
Jan 23 #Python
You might like
表单复选框向PHP传输数据的代码
2007/11/13 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
javascript引用对象的方法代码
2007/08/13 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
对python3中, print横向输出的方法详解
2019/01/28 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
Linux中如何用命令创建目录
2015/01/12 面试题
外包公司软件测试工程师
2014/11/01 面试题
爱情保证书范文
2014/02/01 职场文书
2014年副班长工作总结
2014/12/10 职场文书
小学优秀教师材料
2014/12/15 职场文书
给客户的感谢信
2015/01/21 职场文书
2016保送生自荐信范文
2016/01/29 职场文书