- 浏览: 559298 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点 ...
平均距离 -
xiao_android_jun:
[color=red][ size=xx-small ...
Android 之 进程的概念介绍 -
明子健:
小伙子,很有前途哦
《将博客搬至CSDN》 -
1140566087:
dugujiujian 写道R.layout.simple_s ...
Android 之 下拉(Spinner) 组件示例 -
dugujiujian:
R.layout.simple_spinner_dropdow ...
Android 之 下拉(Spinner) 组件示例
Android 网络编程
1、网络通信协议及接口
网络通信协议:
就是对计算机之间通信的信息格式,能被收/发双方接受的传递信息的内容的一组定义。即,连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。
网络通信接口:
为了使两个结点能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换,接口包括两个部分:
硬件装置:实现结点之间的信息传送;
软件装置:规定双方进行通信的约定协议;
2、通信协议的分层思想:
为什么要分层?
解:由于结点之间联系复杂,在制定协议时,把复杂成分分解成一些简单成分,再将它们复合起来,最常用的复合方式是层次方式,即同层间可以通信,上一层可以调用下一层,而与再下一层没有关系,各层互不影响,利于系统的开发和扩展;
通信协议的分层规定:
应用程序作为做最高层,把物理通信线路作为最底层,将期间的协议处理分为若干层,规定每层处理的任务,也规定每层的接口标准。
3、参考模型:
OSI 参考模型 TCP/IP参考模型
-------------------- --------------------
| 应用层 | | |
-------------------- | |
| 表示层 | | 应用层 |
-------------------- | |
| 会话层 | | |
-------------------- --------------------
| 传输层 | | 传输层 |
-------------------- --------------------
| 网络层 | | 网络层 |
-------------------- --------------------
| 数据链路层 | | |
-------------------- | 物理+数据链路层 |
| 物理层 | | |
-------------------- --------------------
4、IP 协议:
IP 协议就是为计算机网络相互连接进行通信设计的协议。在因特网中,它能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通;
5、TCP协议 和 UDP 协议:
TCP协议:专门用来设计用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议。它是一种面向连接的协议。TCP连接的是字节流而非报文流。
特点:面向连接 | 可靠 | 效率低
UDP协议:向应用程序提供了一种发送封装的原始IP数据报的方法,并且发送时无需建立连接。是一种不可靠的连接。
特点:面向无连接 | 不可靠 | 效率高
6、TCP/UDP 区别:
TCP 协议进行通讯的两个应用程序有主次之分,一个称为服务器程序,一个称为客户端程序,两者功能和编写方法不大一样;
UDP 通信的两个程序是平等的,么有主次之分,2个程序代码可以是一样的;
7、C/S 模式(客户端/服务器模式):优点,
服务器和客户端分摊工作;
服务器可以同时为数千台客户端服务;
多个客户端可以同时访问服务器;
提示:代表本地客户端地址:10.0.2.2
8、------------------------------ Socket ------------------------
1、Socket 的介绍:(IT 中称为 "套接字")
Socket: 网络通信的接口,基于不同的协议,有各种不同的Socket , 比如有基于TCP 协
议的Socket 和基于UDP 协议的Socket 以及基于蓝牙协议的Socket ,Android 中使用的是
Java 的Socket 模型;
Socket 用于描述IP地址和端口,是一种通信链的句柄,这是一个比较抽象的概念;
2、端口简单介绍:
每一个端口都可以有一个应用程序来进行通讯使用;端口是计算机和外界通讯的接口,这些接口都是逻辑接口;
取值范围:0~~~256*256-1
提示:1024 以下都是操作系统保留端口,为了避免冲突,请使用 大于1024 的端口号;
例如:Http 协议使用端口: 80
Ftp 协议使用端口:21
3、Socket 的作用:
应用程序可以通过 “ 套接字 ” 向网络发送请求或者应答网络的请求,这时候就把Socket 分成了两部分,一部分是服务器端的Socket 。 一部分是客户端的Socket ,这个Socket主要用来向网络发送数据。
注意:发送数据的时候用的是什么协议,接收的时候也要用相同的协议;发送的时候指定接收端的IP地址和端口号就可以了,究竟数据包或数据是如何发送的,框架已经帮我们封装好了,我们不用去关心的;
4、下面请看代码,演示的时 客户端向服务器发送请求,并接收服务器端返回的数据;
(Socket 是TCP/IP 协议上的一种通信,在通信的两端各建立一个虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信)
注意:客户端访问服务器需要设置权限:
服务器端:
客户端:
详细请参考附件:实现多线程 多窗口的聊天记录:
1、网络通信协议及接口
网络通信协议:
就是对计算机之间通信的信息格式,能被收/发双方接受的传递信息的内容的一组定义。即,连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。
网络通信接口:
为了使两个结点能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换,接口包括两个部分:
硬件装置:实现结点之间的信息传送;
软件装置:规定双方进行通信的约定协议;
2、通信协议的分层思想:
为什么要分层?
解:由于结点之间联系复杂,在制定协议时,把复杂成分分解成一些简单成分,再将它们复合起来,最常用的复合方式是层次方式,即同层间可以通信,上一层可以调用下一层,而与再下一层没有关系,各层互不影响,利于系统的开发和扩展;
通信协议的分层规定:
应用程序作为做最高层,把物理通信线路作为最底层,将期间的协议处理分为若干层,规定每层处理的任务,也规定每层的接口标准。
3、参考模型:
OSI 参考模型 TCP/IP参考模型
-------------------- --------------------
| 应用层 | | |
-------------------- | |
| 表示层 | | 应用层 |
-------------------- | |
| 会话层 | | |
-------------------- --------------------
| 传输层 | | 传输层 |
-------------------- --------------------
| 网络层 | | 网络层 |
-------------------- --------------------
| 数据链路层 | | |
-------------------- | 物理+数据链路层 |
| 物理层 | | |
-------------------- --------------------
4、IP 协议:
IP 协议就是为计算机网络相互连接进行通信设计的协议。在因特网中,它能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通;
5、TCP协议 和 UDP 协议:
TCP协议:专门用来设计用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议。它是一种面向连接的协议。TCP连接的是字节流而非报文流。
特点:面向连接 | 可靠 | 效率低
UDP协议:向应用程序提供了一种发送封装的原始IP数据报的方法,并且发送时无需建立连接。是一种不可靠的连接。
特点:面向无连接 | 不可靠 | 效率高
6、TCP/UDP 区别:
TCP 协议进行通讯的两个应用程序有主次之分,一个称为服务器程序,一个称为客户端程序,两者功能和编写方法不大一样;
UDP 通信的两个程序是平等的,么有主次之分,2个程序代码可以是一样的;
7、C/S 模式(客户端/服务器模式):优点,
服务器和客户端分摊工作;
服务器可以同时为数千台客户端服务;
多个客户端可以同时访问服务器;
提示:代表本地客户端地址:10.0.2.2
8、------------------------------ Socket ------------------------
1、Socket 的介绍:(IT 中称为 "套接字")
Socket: 网络通信的接口,基于不同的协议,有各种不同的Socket , 比如有基于TCP 协
议的Socket 和基于UDP 协议的Socket 以及基于蓝牙协议的Socket ,Android 中使用的是
Java 的Socket 模型;
Socket 用于描述IP地址和端口,是一种通信链的句柄,这是一个比较抽象的概念;
2、端口简单介绍:
每一个端口都可以有一个应用程序来进行通讯使用;端口是计算机和外界通讯的接口,这些接口都是逻辑接口;
取值范围:0~~~256*256-1
提示:1024 以下都是操作系统保留端口,为了避免冲突,请使用 大于1024 的端口号;
例如:Http 协议使用端口: 80
Ftp 协议使用端口:21
3、Socket 的作用:
应用程序可以通过 “ 套接字 ” 向网络发送请求或者应答网络的请求,这时候就把Socket 分成了两部分,一部分是服务器端的Socket 。 一部分是客户端的Socket ,这个Socket主要用来向网络发送数据。
注意:发送数据的时候用的是什么协议,接收的时候也要用相同的协议;发送的时候指定接收端的IP地址和端口号就可以了,究竟数据包或数据是如何发送的,框架已经帮我们封装好了,我们不用去关心的;
4、下面请看代码,演示的时 客户端向服务器发送请求,并接收服务器端返回的数据;
(Socket 是TCP/IP 协议上的一种通信,在通信的两端各建立一个虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信)
注意:客户端访问服务器需要设置权限:
<uses-permission android:name="android.permission.INTERNET"/>
服务器端:
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /** * 服务器端 * * @author Administrator * */ public class MyServer { // 程序入口 public static void main(String args[]) { try { // 建立一个ServletSocket ,监听对应的端口,用于监听客户端的连接请求 ServerSocket serverSocket = new ServerSocket(40000); while (true) { // 循环不断接收客户端的请求 System.out.println("等待客户端请求...."); Socket socket = serverSocket.accept(); // 等待接收 System.out.println("收到请求,服务器运行..."); // 返回数据 OutputStream os = socket.getOutputStream(); String msg = "服务器大国的钦差到了..."; os.write(msg.getBytes("utf-8")); /* ---------- 不能在此处读取数据,否则会造成数据堵塞,无法运行 理由:使用传统的BufferedReader 的readLine 方法读取数据时,在该方法成功返回之前线程被阻塞,程序无法继续执行。 ------------- */ // 接收客户端数据,并返回数据 // InputStream is = socket.getInputStream(); // BufferedReader br = new BufferedReader(new // InputStreamReader(is,"UTF-8")); // 字符流处理 // System.out.println("客户端发送数据为:"+br.readLine()); // is.close(); /* ---------------------- */ os.close(); socket.close(); } } catch (Exception e) { e.printStackTrace(); } } }
客户端:
package com.sun.clientsocket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { // 程序入口 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { // 获取Socket 套接字,指定发送地址以及端口,发送请求 // 提示:代表本地客户端地址:10.0.2.2 Socket socket = new Socket("10.0.2.2", 40000); // 发送请求数据 OutputStream os = socket.getOutputStream(); os.write("参加服务器大王,我是客户端使者,请求响应".getBytes("utf-8")); // 获取服务器返回的数据 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); Log.i("msg", "服务器数据:"+br.readLine()); os.close(); br.close(); socket.close(); } catch (Exception e) { // TODO: handle exception } } }
详细请参考附件:实现多线程 多窗口的聊天记录:
发表评论
-
Android 之 网络访问服务器,解析JSON数据
2014-03-28 22:50 3418提示:在访问网络,或者服务器的数据一定要注意 网络权限的声明: ... -
Android 之 AsyncTask 异步任务
2014-03-20 08:44 3522Android ... -
Android 之 Looper Handler Message 之间的关系
2014-03-19 10:16 3665Android 的消息 ... -
Android 之 多线程与Socket联合使用案例
2014-03-19 10:15 2673多线 ... -
Android 之 实现Runnable 接口与继承Thread的区别
2014-03-19 10:15 2199实现Runnable 接口 相 ... -
Android 之 GSON解析JSON数据
2014-03-19 10:14 4492... -
Android 之 使用Pull 解析xml文件
2014-03-18 21:04 1045/** * 使用Pull进行 xml 文件的解析 ... -
Android 之 使用DOM解析xml文件
2014-03-18 21:02 2745DOM 解析 xml 格式的文件 1、 xml简介:xml ... -
Android 之 百度API 密钥安全码生成
2014-03-04 22:29 2413近期要做个关于旅游助手的应用,开始接触百度API了。大神们 ... -
Android 之 EditText属性用法介绍
2014-01-06 23:49 3991EditText的属性 EditText继承关系:View-- ... -
Android 之 自定义适配器
2014-01-08 10:40 1775自定义适配器 1、实现 * 自定义适配器要继承 BaseA ... -
Android 之 自定义控件用法介绍
2014-01-08 10:40 1720自定义效果:实现:图片和文字混合 首先创建需要组合的子布局: ... -
Android 之 资源自适应与国际化
2014-01-08 10:40 3081<!-- 国际化和资源自适应 ... -
Android 之 Parcelable 序列化
2014-01-08 10:41 2699/* 序列化 * * 作 ... -
Android 之 五大布局案例
2014-01-08 10:41 21331、LinearLayout 线性布局例子: <Lin ... -
Android 之 通知Notification
2014-03-03 22:30 3897Notification 和 NotificationMana ... -
Android 之 手机全屏显示
2014-03-03 22:30 2344/* 1、全屏状态的显示 介绍:Android 中提供了Wi ... -
Android 之 拦截手机短信并自动转发
2014-03-03 22:29 5436拦截短信和发送短信都需要相关的权限: <?xml ve ... -
Android 之 将RAW资源文件写入SD卡工具类
2014-03-01 10:09 3615package com.sun.coptfiletosd; ... -
Android 之 监控手机电量
2014-03-01 10:09 1797package com.example.battery; ...
相关推荐
在Android开发中,套接字(Socket)是网络通信的核心组件,它允许应用程序通过网络发送和接收数据。本文将深入探讨Android中Socket的使用方法,以及如何结合Mars视频教程来提升你的技能。 首先,理解Socket的基本...
Socket,也称为“套接字”,是网络通信的一种基础工具,它提供了进程间或者网络间进程的通信机制。本篇将详细介绍如何在Android客户端和服务器端通过Socket实现长连接,以及客户端之间的消息传递。 首先,我们需要...
1. **监听Socket**:在Linux服务器端,使用`socket()`函数创建一个套接字,`bind()`绑定到指定的IP和端口,然后`listen()`开始监听连接请求。 2. **接受连接**:当收到Android客户端的连接请求时,`accept()`函数会...
在Linux系统中,Socket通信流程与Android类似,但涉及更多底层细节,如套接字地址结构、套接字选项和错误处理。以下是基本步骤: 1. 打开套接字:调用`socket()`函数创建一个套接字,指定协议类型(如SOCK_STREAM...
Socket,也被称为套接字,是网络编程中的一个抽象接口,它允许应用程序通过网络发送和接收数据。在TCP/IP模型中,Socket是应用层与传输层的桥梁,它封装了IP地址和端口号,使得不同设备上的进程能够相互通信。 在...
在本教程中,我们将探索如何在30分钟内创建一个基于Socket套接字的小型即时通信(IM)Demo。这个项目涵盖了Android客户端和服务器端的实现,为初学者提供了一个快速入门即时通信技术的平台。我们将深入理解Socket...
Socket基于TCP/IP协议,为应用程序提供了低级别的、原始的套接字通信接口。在这个过程中,我们需要创建服务器端(ServerSocket)来监听连接,并创建客户端(Socket)来发起连接请求。以下将详细介绍这个过程中的关键...
Socket,又称套接字,是网络通信的基本单位,提供了进程间、网络间进程通信的一种接口。本示例可能是一个关于如何实现和管理Socket长连接的代码演示。 在TCP/IP协议族中,Socket分为两种类型:短连接(Short-lived ...
Socket,通常被称为套接字,是网络编程中的一个接口,允许应用程序通过网络发送和接收数据。在这个"Socket-android.zip"压缩包中,包含了一个完整的Android Socket通信聊天应用示例,包括客户端(Client)和服务器端...
Socket,也被称为套接字,是网络编程的基本组件,允许两个网络连接端点进行数据交换。在Android中,Socket可以作为IPC的一种方式,尤其是在需要跨设备或跨应用通信时。 **Socket基础** 1. **Socket概念**:Socket...
`ServerSocket`创建一个监听套接字,等待客户端的连接。当连接建立后,通过`accept()`方法获取一个新的`Socket`对象,然后与客户端进行通信。 在Android模拟器上,我们可以使用像Soket.io这样的工具来模拟服务端,...
Socket,也被称为套接字,是网络通信中的一个重要接口,它为两台设备提供双向通信的通道。在Android中,我们通常使用java.net.Socket类来创建和管理Socket。Socket基于TCP/IP协议,确保数据的可靠传输,通过IP地址和...
Socket,也称为套接字,是网络编程的基本接口,允许两台设备(如Android手机和平台服务器)之间的双向通信。在Android中,Socket通信常用于实现即时通讯应用,如聊天应用或者在线游戏等。下面将详细介绍Android...
Socket,又称为套接字,是TCP/IP协议族中的编程接口,允许应用程序通过网络进行通信。在Android上实现Socket TCP通信,我们需要了解以下几个关键知识点: 1. **环境准备**: - **Eclipse**:这是一个历史悠久的...
Socket,也称为套接字,是网络通信中的一个抽象概念,它为进程间的通信提供了一种标准的方法。在网络环境中,Socket就像是两个应用之间的通信端口,使得数据能在不同设备间传输。 在Android中,我们通常使用`java...
Socket,也称为套接字,是网络通信的基本单元,提供了进程间的网络通信能力。它允许两个程序通过网络交换数据,就像通过管道或电缆连接的两个设备一样。 2. **C#中的Socket编程**: 在C#中,`System.Net.Sockets`...
本实验报告主要介绍了移动互联网应用开发中 Android 网络编程的基础知识,涵盖了串口通信、多线程编程和基于 Socket 套接字的网络编程等方面。 一、实验目的和要求 1. 掌握基于串口通信的 Android 应用程序的开发...
Socket,通常被称为套接字,是网络通信中的一个端点,允许两台机器之间的应用程序进行双向通信。 在Android客户端,我们首先需要导入必要的库,通常是`java.net.Socket`和`java.io.*`,以便创建Socket实例和进行...
Socket,又称为套接字,是网络编程中的一个抽象概念,用于描述IP地址和端口号的组合,是应用层与传输层的接口。在Android中,我们可以使用Java的Socket类和ServerSocket类进行网络通信。 1. **创建ServerSocket**:...
1. **初始化Socket**:在C++代码中,使用`socket()`函数创建一个Socket实例,指定协议族(通常为AF_INET)和套接字类型(SOCK_STREAM代表TCP)。 2. **配置服务器地址和端口**:使用`sockaddr_in`结构体设置服务器...