手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的。它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态。因此网络支持对于手机应用非常重要。

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 blocke.printStackTrace();}
}
}

ServerThread继承Thread:

public class ServerThread extends Thread{private Socket socket;OutputStream outputStream;public ServerThread(Socket socket) {this.socket=socket;}@Overridepublic void run() {// TODO Auto-generated method stubtry {outputStream=socket.getOutputStream();outputStream.write(("服务器端的时间"+new Date()).getBytes("UTF-8"));outputStream.flush();outputStream.close();} catch (Exception e) {// TODO Auto-generated catch blocke.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 blocke.printStackTrace();} };}.start();}

从服务器端得到时间~

效果图如下:

源码:下载

Android之使用TCP和URL协议进行网络编程相关推荐

  1. step5 . day2 网络编程 基于TPC协议的网络编程流程及API

    基于TCP协议的网络编程流程 服务器端: 1) socket(),创建套接字文件,用于连接 2) bind(), 绑定,把socket()函数返回的文件描述符和IP.端口号进行绑定; 3) liste ...

  2. TCP原理,Socket与网络编程入门

    TCP原理,Socket与网络编程入门 开篇 从互联网的诞生以来,网络程序逐渐普及.计算机网络将各个计算机连接到一起使它们可以通信.在现代,网络已成为我们十分重要的一部分.这次不搞些费脑子的东西,就让 ...

  3. 深入分析websocket协议,从3个方面设计网络应用层协议丨网络编程|网络IO|epoll|socket|网络协议丨c/c++linux服务器开发

    深入分析websocket协议,从3个方面设计网络应用层协议 视频讲解如下: 深入分析websocket协议,从3个方面设计网络应用层协议丨网络编程|网络IO|epoll|socket|网络协议丨c/ ...

  4. python tcp协议_python 网络编程 -- Tcp协议

    Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 客户端 ...

  5. JAVA初学者如何实现基于UDP和TCP协议的网络编程

    首先,我们需要先了解UDP协议.TCP协议的概念: 一.UDP协议:用户数据报协议,是一种无连接协议 二.TCP协议:文件传输协议,是一种面向连接的协议 他们都位于TCP/IP模型中的传输层,为整个网 ...

  6. 九、网络协议和网络编程

    1.TCP建立连接的过程. 在谈及TCP建立连接和释放连接过程,先来简单认识一下TCP报文段首部格式的的几个名词(这里只是简单说明,具体请查看相关教程)  序列号seq:占4个字节,用来标记数据段的顺 ...

  7. 基于TCP的C/S初级网络编程1

    导读 本篇实现C/S架构的"计算器",与大家分享. 看了会网络编程,便不自觉YY了下:实现一个简单的计算器,客户端给出简单的运算,服务端负责运算.这一小项目做起来很有意思,而且难度 ...

  8. 网络协议与网络编程(双电脑串口通讯)

    C.C++网络编程(双电脑串口通讯) 在阅读本文前.请确保先查看这篇文章,学习有关TCP网编与单电脑信息传输实践. 文章目录 C.C++网络编程(双电脑串口通讯) 1.让两台电脑连接同一个局域网 2. ...

  9. 【HTTP协议与网络编程】HTTP概念和消息

    一. HTTP概念 1. HTTP是什么 HTTP即超文本传输协议(HyperText Transfer Protocol),是网络中使用最广泛的一种网络协议. HTTP是一种"客户端-服务 ...

最新文章

  1. java操作elasticsearch实现query String
  2. MVC匿名类传值学习
  3. python—unittest—数据驱动详细讲解(ddt)
  4. linux新建好文件后怎么编译,使用autoconf生成Makefile并编译工程的步骤
  5. mysql忽略数据类型_MYSQL 常用数据类型
  6. 第一轮返工潮,哪些城市疫情传播压力最大
  7. 从第一范式到第二范式所做的操作是_数据库设计三大范式
  8. 蓝桥杯真题:外卖优先级
  9. C语言实现英文句子单词提取并分离
  10. java万年历制作_【转】用EXCEL制作一份万年历方法
  11. 【总结】从0到1的项目经历
  12. bttray.exe
  13. python编程培训郑州
  14. 恒讯科技资讯分享:境外服务器知识科普
  15. 用计算机绘图的注意事项,计算机绘图实践心得.doc
  16. 云宏信息科技股份有限公司
  17. 每个销售员都需要掌握的获取新客户的9种方法
  18. 16_ZYNQ7020开发板gpio输入实验
  19. 【THUSC2017】【LOJ2977】巧克力 斯坦纳树
  20. 博士之死背后异化的师生关系

热门文章

  1. [scrapy.spidermiddlewares.offsite] DEBUG: Filtered offsite request to ‘XXX‘
  2. SQL2005数据库附加
  3. Chrome 扩展 H5 游戏结构检查器 GameInspect 支持 Laya, egret, cocosCreate, cocos2d-js
  4. 段落首行缩进怎么弄 html,html5怎么开头空格?利用css实现首行缩进功能!
  5. Windows逆向 微信是如何限制多开的
  6. 解决罗技G502HERO鼠标乱飘的问题
  7. MySql中的longtext字段的返回问题
  8. 如何用浏览器进行网站源代码的静态分析—赏金猎人入门手册
  9. 刷题周记(九)——#状压DP:最短Hamilton路径、小国王(互不侵犯)、玉米田(Corn Fields G)、愤怒的小鸟、吃奶酪、炮兵阵地、宝藏 #区间DP:清空字符串#DP:关灯问题II
  10. 电脑重装与手机换机的工作备忘