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实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
python实现连连看游戏
Feb 14 Python
python 弧度与角度互转实例
Apr 15 Python
python 基于opencv实现高斯平滑
Dec 18 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
索尼ICF-SW100收音机评测
2021/03/02 无线电
MVC模式的PHP实现
2006/10/09 PHP
图书管理程序(三)
2006/10/09 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
javascript new fun的执行过程
2010/08/05 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
基于JavaScript实现轮播图效果
2021/01/02 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
python 性能提升的几种方法
2016/07/15 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
Python爬虫开发与项目实战
2020/12/16 Python
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
shell程序中如何注释
2012/01/28 面试题
市场开发与营销专业求职信范文
2014/05/01 职场文书
保护环境建议书300字
2014/05/13 职场文书
分家协议书范本
2016/03/22 职场文书