基于TCP协议和UDP协议的原生Socket通信

本文深入探讨安卓环境下Socket网络编程的基础,详细讲解基于TCP和UDP协议的编程流程与核心API,包括Socket、ServerSocket、DatagramPacket和DatagramSocket的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

上一篇基础知识回顾中我们提到Socket套接字只是一个API,单独的Socket是没有任何作用的,基于一定的协议,比如TCP,UDP协议,才能使得数据畅通传输。

安卓Socket网络编程基础知识回顾

基于TCP协议的Socket编程

既然是基于TCP,那么就有他的一套代码逻辑体系,我们只需要在Socket API的帮助下,使用TCP协议,就可以进行一个完整的基于TCP协议的Socket网络编程了。

主要API
Socket,客户端相关
1,构造方法
Socket(String host,int port)
创建一个流套接字并将其连接到指定主机上的指定端口号,即就是连接到host主机上的port端口上的。
2,getInputStream()
拿到此套接字的输入流,收到的数据就在这里。
3,getOutputStream()
返回此套接字的输出流,要发送的数据放到这里

ServerSocket,服务器端相关
1,构造方法
ServerSocket(int port)
创建服务器端的监听port端口的套接字
2,Socket accept()
侦听并接受到此套接字的连接,此方法在连接传入之前一直阻塞,服务端通过这个方法拿到与客户端建立的端到端连接的Socket。

基于TCP编程的例子
服务器端:这里使用eclipse新建一个Server.java来处理服务器端逻辑。
客户端:使用AndroidStudio新建一个Client.java文件。
然后先运行服务器,此时服务器端会一直处于挂起状态,然后再运行手机上的程序,从手机上发送一段内容到服务器端,服务器成功接收然后再给客户端发一个响应信息。

基于UDP协议的Socket编程

UDP:User Datagram Protocol 用户数据包协议,关键点在于数据包,主要就是把数据打包然后丢给目标,而不管目标是否接收到数据。

主要流程:发送者打包数据(DatagramPacket),然后通过DatagramSocket发送,接收者收到数据包解开数据。

主要API:
DatagramPacket,用来包装发送的数据
1,发送数据时的构造方法
DatagramPacket(byte[] buf,int length,SocketAddress address)
DatagramPacket(byte[] buf,int length,InetAddress address,int port)
用来将长度为length的包发送到指定主机上的指定端口号,length参数必须小于等于buf.length。
2,接收数据时的构造方法
DatagramPacket(byte[] buf,int length)
用来接收长度为length的数据包。

DatagramSocket
1,构造方法
DatagramSocket()
DtaagramSocket(int port)
创建数据报套接字并将其绑定到本地主机上的指定端口(或者任何可用端口),套接字将被绑定到通配符地址,IP地址由内核来选择。
2,发送数据
send(DatagramPacket p)
从此套接字发送数据包,DatagramPacket包含的信息指示:将要发送的数据,其长度,远程主机的ip地址和远程主机的端口号。
3,接收数据
receive(DatagramPacket p)
从此套接字接收数据包,当此方法返回时,DatagramPacket的缓冲区填充了接收的数据,数据报包也包含发送方的IP地址和发送方机器上的端口号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值