当前位置:首页 > > 充电吧
[导读]一、Android网络简介Android与服务器的通信方式主要有两种,一种是Http通信,另一种是Socket通信。HTTP通信:Android中内置HttpClient,这样可以发方便的发送Http

一、Android网络简介

Android与服务器的通信方式主要有两种,一种是Http通信,另一种是Socket通信。

HTTP通信:Android中内置HttpClient,这样可以发方便的发送Http请求并获取Http响应,简化了与网站之间的交互。

Socket通信:Android还支持JDK本身的TCP、UDP网络通信的API,可以使用Java中提供的ServerSocket、Socket类,来建立基于TCP/IP协议的网络通信。(本章主要讲解TCP协议编程的相关内容)也可以使用DatagramSocket、Datagrampacket、MulticastSocket来建立基于UDP协议的网络通信。

两者的区别:两者的最大差异在于,Http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。

二、TCP协议基础

TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端形成网络虚拟链路。Java使用Socket对象来代表两端的通信接口,并通过Socket产生IO流来进行通信。

IP协议是Internet上使用的一个关键协议,它的全称是Internet Protocol,即Internet协议,通常简称IP协议。通过使用IP协议,使Internet成为一个允许连接不同类型的计算机和不同操作系统的网络。

要使两台计算机彼此之间进行通信,必须使两台计算机使用同一种“语言”,IP协议只保证计算机能发送和接收分组数据。IP协议负责将消息从一个主机传送到另一个主机,消息在传送的过程中被分割成一个个小包。

TCP协议被称作一种端对端协议,这是因为它为两台计算机之间的连接起了重要作用:当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连接:用于发送和接收数据的虚拟链路。

通过这种重发机制,TCP协议向应用程序提供可靠地通信连接,使它能够自动适应网上的各种变化,即使在Internet暂时出现堵塞的情况下,TCP也能够保证通信的可靠。

虽然IP和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的,只有两者结合,才能保证Internet在复杂的环境下正常运行,凡是要连接到Internet的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称为TCP/IP协议。

三、如何使用ServerSocket创建TCP服务器端:

Java中能接收其他通信实体连接请求的类是ServerSocket,ServerSocket对象用于监听来自客户端的Socket连接,若没有连接则它将一直处于等待状态。其中监听来自客户端请求的方法:Socket accept()。该方法若收到一个客户端Socket的连接请求,该方法将返回一个与连接客户端Socket对应的Socket,否则将阻塞等待。代码如:

ServerSocket socket = new ServerSocket(21300);

While(true){

Socket s = socket.accept();

}

四、使用Socket进行通信

客户端经常使用Socket来连接到指定服务器,Socket类提供构造器连接到指定远程主机和远程端口的构造器,如:

Socket socket = new Socket(“192.168.1.11”,8000);

创建完毕Socket之后就可以进行通信了。Socket提供了InputStream getInputStream()和OutputStream getOutputStream两个方法来获取输入流和输出流进行数据的读写操作。例如:

while(true){

Socket socket = serversocket.accept();

OutputStream os = socket.getOutputStream();

os.write(“你好,我是服务器”.getBytes(“utf-8”));

os.close();

socket.close();

}

此时,就可以进行服务器与客户端的读写操作了。但是考虑到简单C/S聊天室应用的实现,只了解这个是不够的,需要加上多线程的才能使代码变得完善。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在工业自动化、汽车电子及物联网领域,CANBUS总线因其高可靠性和实时性被广泛应用。然而,复杂电磁环境、机械振动及配置不当等因素常导致通信异常。本文基于实际工程案例,从硬件、协议、软件及环境四大维度,系统梳理CANBUS...

关键字: CANBUS 网络通信 CANBUS总线

其他电脑(比如安卓手机/平板电脑)的屏幕坏了,你可能想在安排维修之前紧急访问一些东西。你可以使用android的USB OTG功能(是的,几乎每个android都支持这个功能,你可以将鼠标和键盘连接到它)。

关键字: USB 鼠标 Android 树莓派

Google 宣布与中国 AR 科技公司 XREAL 达成深度战略合作,联合推出全球首款专为 Android XR 平台打造的旗舰级 AR 眼镜 Project Aura。

关键字: Google XREAL Android XR眼镜 AR

继停止维护AOSP开源项目后,谷歌母公司Alphabet近日被曝在其安卓系统(Android)、Pixel手机以及Chrome浏览器等部门裁员数百人。这一举措引发了业界的广泛关注,也引发了对谷歌未来业务布局的诸多猜测。

关键字: 谷歌 AOSP Android 裁员

在本教程中,我们将使用Capacitor 6、Angular和TypeScript构建一个Android应用程序,该应用程序通过串行端口连接到BleuIO USB加密狗。该应用程序允许用户直接从Android设备发送和接...

关键字: Android USB 电容器 BLE设备

早前媒体报道谷歌将停止维护Android开源项目(AOSP),将Android开发全面转向内部闭源分支,目前这一消息已经得到谷歌官方确认。

关键字: 谷歌 Android 开源

本项目演示了如何通过OTG (on - go) USB在Android设备上使用BleuIO USB加密狗作为串行端口。使用电容器6和@adeunis/电容器-串行插件,我们建立串行连接,发送AT命令,并实时读取响应。该...

关键字: 电容器 Android 传感器 微控制器 嵌入式系统

在Linux操作系统中,Android Debug Bridge(ADB)是一个功能强大的命令行工具,它允许开发者在计算机和Android设备之间建立通信,从而进行调试、管理、安装应用等操作。本文将详细介绍在Linux系...

关键字: Linux系统 Android Debug ADB

随着Android操作系统的进步,智能手机的使用日益增加。随后,有报道称,恶意个人和黑客利用 Android 提供的漏洞来访问用户珍视的数据。例如,此类威胁包括 2021 年针对 Android 设备发布的 Flubot...

关键字: Android 恶意软件
关闭