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 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协议进行网络编程相关推荐
- step5 . day2 网络编程 基于TPC协议的网络编程流程及API
基于TCP协议的网络编程流程 服务器端: 1) socket(),创建套接字文件,用于连接 2) bind(), 绑定,把socket()函数返回的文件描述符和IP.端口号进行绑定; 3) liste ...
- TCP原理,Socket与网络编程入门
TCP原理,Socket与网络编程入门 开篇 从互联网的诞生以来,网络程序逐渐普及.计算机网络将各个计算机连接到一起使它们可以通信.在现代,网络已成为我们十分重要的一部分.这次不搞些费脑子的东西,就让 ...
- 深入分析websocket协议,从3个方面设计网络应用层协议丨网络编程|网络IO|epoll|socket|网络协议丨c/c++linux服务器开发
深入分析websocket协议,从3个方面设计网络应用层协议 视频讲解如下: 深入分析websocket协议,从3个方面设计网络应用层协议丨网络编程|网络IO|epoll|socket|网络协议丨c/ ...
- python tcp协议_python 网络编程 -- Tcp协议
Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 客户端 ...
- JAVA初学者如何实现基于UDP和TCP协议的网络编程
首先,我们需要先了解UDP协议.TCP协议的概念: 一.UDP协议:用户数据报协议,是一种无连接协议 二.TCP协议:文件传输协议,是一种面向连接的协议 他们都位于TCP/IP模型中的传输层,为整个网 ...
- 九、网络协议和网络编程
1.TCP建立连接的过程. 在谈及TCP建立连接和释放连接过程,先来简单认识一下TCP报文段首部格式的的几个名词(这里只是简单说明,具体请查看相关教程) 序列号seq:占4个字节,用来标记数据段的顺 ...
- 基于TCP的C/S初级网络编程1
导读 本篇实现C/S架构的"计算器",与大家分享. 看了会网络编程,便不自觉YY了下:实现一个简单的计算器,客户端给出简单的运算,服务端负责运算.这一小项目做起来很有意思,而且难度 ...
- 网络协议与网络编程(双电脑串口通讯)
C.C++网络编程(双电脑串口通讯) 在阅读本文前.请确保先查看这篇文章,学习有关TCP网编与单电脑信息传输实践. 文章目录 C.C++网络编程(双电脑串口通讯) 1.让两台电脑连接同一个局域网 2. ...
- 【HTTP协议与网络编程】HTTP概念和消息
一. HTTP概念 1. HTTP是什么 HTTP即超文本传输协议(HyperText Transfer Protocol),是网络中使用最广泛的一种网络协议. HTTP是一种"客户端-服务 ...
最新文章
- java操作elasticsearch实现query String
- MVC匿名类传值学习
- python—unittest—数据驱动详细讲解(ddt)
- linux新建好文件后怎么编译,使用autoconf生成Makefile并编译工程的步骤
- mysql忽略数据类型_MYSQL 常用数据类型
- 第一轮返工潮,哪些城市疫情传播压力最大
- 从第一范式到第二范式所做的操作是_数据库设计三大范式
- 蓝桥杯真题:外卖优先级
- C语言实现英文句子单词提取并分离
- java万年历制作_【转】用EXCEL制作一份万年历方法
- 【总结】从0到1的项目经历
- bttray.exe
- python编程培训郑州
- 恒讯科技资讯分享:境外服务器知识科普
- 用计算机绘图的注意事项,计算机绘图实践心得.doc
- 云宏信息科技股份有限公司
- 每个销售员都需要掌握的获取新客户的9种方法
- 16_ZYNQ7020开发板gpio输入实验
- 【THUSC2017】【LOJ2977】巧克力 斯坦纳树
- 博士之死背后异化的师生关系
热门文章
- [scrapy.spidermiddlewares.offsite] DEBUG: Filtered offsite request to ‘XXX‘
- SQL2005数据库附加
- Chrome 扩展 H5 游戏结构检查器 GameInspect 支持 Laya, egret, cocosCreate, cocos2d-js
- 段落首行缩进怎么弄 html,html5怎么开头空格?利用css实现首行缩进功能!
- Windows逆向 微信是如何限制多开的
- 解决罗技G502HERO鼠标乱飘的问题
- MySql中的longtext字段的返回问题
- 如何用浏览器进行网站源代码的静态分析—赏金猎人入门手册
- 刷题周记(九)——#状压DP:最短Hamilton路径、小国王(互不侵犯)、玉米田(Corn Fields G)、愤怒的小鸟、吃奶酪、炮兵阵地、宝藏 #区间DP:清空字符串#DP:关灯问题II
- 电脑重装与手机换机的工作备忘