Android 之 Socket套接字的简单应用
程序员文章站
2022-03-02 19:49:13
...
1、what's Socket?
* Socket是网络通信的一种接口,基于不同的协议有不同的Socket;
例如: TCP协议的Socket
UDP协议的Socket;
蓝牙协议的Socket;
* Socket 在计算机行业中称为:套接字,用于描述IP地址和端口,是通信链的句柄;
端口:计算机拥有端口,每一个端口都可以有一个应用程序来进行通讯的使用;
端口范围:0-256*256-1;
例如: 80端口 对应 HTTP 协议使用端口;
21端口 对应FTP 协议端口;
* 用途:应用程序通过套接字,像网络发送请求或者应答网络的请求;
* 用法:发送请求的时候Socket分成了两部分:
一部分:服务器端的Socket:主要接受来自网络的请求,一直监听在某一个端口上;
二部分:客户端的Socket , 这个Socket主要用来向网络发送数据;
2、UDP协议 和 TCP 协议:
* 简介:二者都是互联网使用最广泛的协议,基于IP的协议;
* 特点:
UDP:不靠谱,无连接,效率高;
TCP:靠谱,有连接,效率低;
3、Socket 通讯流程:选择UDP/TCP 中的一种协议发送数据-->通过“通信信道”(IP的基础网络)
->服务器端(用什么协议发送的那么则用什么协议接收);
4、Socket与ServerSocket:
* 过程介绍:Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从
而在通信的两端之间形成了网络虚拟链路。一旦建立虚拟的网络链路,两端的程序就可以通过虚拟链路进行
通信;
5、温馨提示:设计到网络资源的访问,必须在AndoridManifest.xml中设置网络访问权限;
<uses-permission android:name="android.permission.INTERNET"/>
6、ServerSocket 创建TCP服务器端:代码如下:
7、Socket 创建客户端:java代码如下:
/* 客户端,请求服务器 */
* Socket是网络通信的一种接口,基于不同的协议有不同的Socket;
例如: TCP协议的Socket
UDP协议的Socket;
蓝牙协议的Socket;
* Socket 在计算机行业中称为:套接字,用于描述IP地址和端口,是通信链的句柄;
端口:计算机拥有端口,每一个端口都可以有一个应用程序来进行通讯的使用;
端口范围:0-256*256-1;
例如: 80端口 对应 HTTP 协议使用端口;
21端口 对应FTP 协议端口;
* 用途:应用程序通过套接字,像网络发送请求或者应答网络的请求;
* 用法:发送请求的时候Socket分成了两部分:
一部分:服务器端的Socket:主要接受来自网络的请求,一直监听在某一个端口上;
二部分:客户端的Socket , 这个Socket主要用来向网络发送数据;
2、UDP协议 和 TCP 协议:
* 简介:二者都是互联网使用最广泛的协议,基于IP的协议;
* 特点:
UDP:不靠谱,无连接,效率高;
TCP:靠谱,有连接,效率低;
3、Socket 通讯流程:选择UDP/TCP 中的一种协议发送数据-->通过“通信信道”(IP的基础网络)
->服务器端(用什么协议发送的那么则用什么协议接收);
4、Socket与ServerSocket:
* 过程介绍:Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从
而在通信的两端之间形成了网络虚拟链路。一旦建立虚拟的网络链路,两端的程序就可以通过虚拟链路进行
通信;
5、温馨提示:设计到网络资源的访问,必须在AndoridManifest.xml中设置网络访问权限;
<uses-permission android:name="android.permission.INTERNET"/>
6、ServerSocket 创建TCP服务器端:代码如下:
public static void main(String[] args)throws Exception{ /* 获取一个ServerSocket,用于监听客户端Socket的请求,端口:20000 */ ServerSocket server = new ServerSocket(20000); System.out.println("等待请求..."); /* 服务器有多个客户端请求,则需要不断的接收请求 */ while(true){ /* 接收到客户端Socket的请求,做出响应 ,也产生一个Socket*/ Socket socket = server.accept(); /* 响应客户端返回的数据 */ String message = "Today , NICE"; /* 获得可写流 */ OutputStream os = socket.getOutputStream(); /* 写数据, 并指定字符编码格式为:UTF-8 */ os.write(message.getBytes("UTF-8")); os.close(); socket.close(); System.out.println("一次请求完成"); } }
7、Socket 创建客户端:java代码如下:
/* 客户端,请求服务器 */
public void accept_serverSocket(){ try{ /* 获取Socket 对象,指定IP , 以及端口 */ Socket socket = new Socket("192.168.16.16",20000); /* 将Socket对应的流封装为缓冲流 */ BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String message = br.readLine(); /* 显示 */ Toast.makeText(MainActivity.this, message, 1000).show(); br.close(); socket.close(); }catch(Exception ex){ } }
下一篇: Android 之 进程的概念介绍