Java学习——网络编程

本文介绍了网络编程的基础概念,包括Java中网络通信技术的应用、C/S和B/S架构的区别,以及IP地址、IPv4/IPv6、端口号和协议的重要性。详细讲解了InetAddress的使用和UDP/TCP通信的实现过程,以及TCP的三次握手和四次挥手协议。
摘要由CSDN通过智能技术生成

网络编程:

在网络通信协议下不同计算机上运行的程序进行数据传输,java中可以使用java.net包下的技术轻松开发出常见的网络应用程序。

常见的软件架构:

C/S:Client/Server,在用户本地需要下载并安装客户端程序,在远程有一个服务器端程序,画面精美,用户体验好,需要开发服务端和客户端

B/S:Browser/Server,只需要一个浏览器,用户通过不同的网址访问不同的服务器,不需要开发客户端,只需要页面和服务端,用户不需要下载,打开浏览器即可使用;

网络编程三要素:

IP地址:设备在网络中的地址,是唯一的标识,是分配给网络设备的数字标识

IPV4:互联网通信协议第四版,采用32位地址长度,分为4组,每组8位,用一个十进制数表示,采用点分十进制;

        特殊IP地址:127.0.0.1,是localhost,回送地址,本机IP,永远只会寻找当前所在本机

IPV6:互联网通信协议第六版,采用128位地址长度,分为8组,每组16位,用一个十六进制表示,采用冒号分十六进制表示,如果十六进制的表示形式中有多个连续的0,可以省略

端口号:应用程序在设备中唯一的标 识

协议:数据在网络中传输的规则,常见的有UDP,TCP,http,https,ftp

InetAddress的使用:

获取InetAddress对象:static InetAddress getByName(String host),确定主机名称的IP地址,主机名称可以是机器名称或者IP地址

获取此IP地址的主机名:String getHostName()

返回文本显示中的IP地址字符串:String getHostAddress()

端口号:

应用程序在设备中的唯一标识,由两个字节表示的整数,取值范围为0~65535,其中0~1023之间的端口号用于一些知名的网络服务或者应用,一个端口号只能被一个应用程序使用

协议:

在计算机网络中连接和通信的规则被称为网络通信协议

UDP协议:用户数据报协议,是面向无连接通信协议,速度快,有大小限制,一次最多发送64K,数据不安全,容易丢失数据

TCP协议:传输控制协议,是面向连接的通信协议,速度慢,没有大小限制,数据安全

UDP通信程序:

1.发送数据:

1).创建发送端的DatagramSocket对象:需要绑定端口,当使用空参时会从所有可用的端口中随机选择一个使用,当使用有参构造时指定端口号进行绑定

2).数据打包(DatagramPacket):dp = new DatagramPacket(bytes[],bytes[].length,inetAddress,port)

3).发送数据:ds.send(dp)

4).释放资源:ds.close()

2.接收数据:

1)创建接收端的DatagramSocket对象:接收的时候一定要绑定端口,而且绑定的端口一定要和发送的端口保持一致

2)接收打包好的数据:dp = new DatagramPacket(bytes[],bytes[].length,inetAddress,port),ds.receive(dp)

3)解析数据包:dp.getData(),dp.getlength(),dp.getAddress(),dp.getPort()

4)释放资源:ds.close()

UDP三种通信方式:

1.单播:一对一

2.组播:组播地址为224.0.0.0~239.255.255.255,其中224.0.0.0~224.0.0.255为预留的组播地址

3.广播:广播地址为255.255.255.255

TCP通信程序:

TCP通信是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,通信之前要保证连接已经建立,通过Socket产生IO流来进行网络通信。

客户端Socket():

1.创建客户端的Socket对象与指定的服务端连接:Socket(String host,int port);

2.获取输出流,写数据:OutputStream socket.getOutputStream()

3.释放资源:void close()

服务器ServerSocket():

1.创建服务器端的Socket对象:ServerSocket(int port)

2.监听客户端连接,返回一个Socket对象:Socket serversocket.accept()

3.获取输入流,读取数据,并把数据显示在控制台:InputSteam socket.getInputStream()

4.释放资源:void close()

三次握手:确保连接建立

1.客户端向服务器发出连接请求,等待服务器确认

2.服务器向客户端返回一个响应,告诉客户端收到了请求

3.客户端向服务器再次发出确认信息,连接建立

四次挥手协议:确保连接断开,且数据处理完毕

1.客户端向服务器发出取消连接请求

2.服务器向客户端返回一个响应,表示收到客户端取消请求

3.服务器将最后的数据处理完毕

4.服务器向客户端发出确认取消信息

5.客户端再次发送确认信息,连接取消

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值