java补充:网络编程
2021/12/29 20:08:06
本文主要是介绍java补充:网络编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 概述
计算机网络:
- 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,
实现资源共享和信息传递的计算机系统
网络编程
- 在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换
网络编程三要素
-
IP地址
要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而lP地址就是这个标识号。也就是设备的标识 -
端口
如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的应用程序了。也就是应用程序的标识 -
协议
连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。常见的协议有UDP协议和TCP协议
2 InetAddress使用(ip)
这个类表示的是ip地址
端口
端口:设备上应用程序的唯一标识
端口号:用两个字节表示的整数,它的取值范围是0~65535。其中,0~1023
之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败
3 协议
协议:计算机网络中,连接和通信的规则被称为网络通信协议
UDP
无连接,不可靠传输
TCP
面向连接,可靠无差错
三次握手
4 UDP通信
UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送,接收数据的对象
通信双方没有客户端和服务端
Java提供了DatagramSocket类作为基于UDP协议的Socket
UDP发送数据的步骤
1 创建发送端的Socket对象(DatagranSocket)
DatagramSocket()构造数据报套接字并将其绑定到本地主机上的任何可用端口
2 创建数据,并把数据打包
创建数据,并把数据打包
DatagramPacket (byte[ ] buf, int length,InetAddress oddress, int port)
3 调用DatagramSocket对象的方法发送数据
调用DatagramSocket对象的方法发送数据
void send (DatagramPacket p)从此套接字发送数据报包
4 关闭发送端
关闭发送端
void close 关闭此数据报套接字
package com.yy; import org.junit.Test; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPTest { @Test public void SendTest() throws Exception { //DatagramSocket()构造数据报套接字并将其绑定到本地主机上的任何可用端口 DatagramSocket ds = new DatagramSocket(); //创建数据,并把数据打包 //DatagramPacket (byte[ ] buf, int length,InetAddress oddress, int port) //构造一个数据包,发送长度为length的数据包到指定主机上的指定端口号。 byte[] bytes = "upd,我来了".getBytes(); DatagramPacket dp = new DatagramPacket(bytes,bytes.length, InetAddress.getByName("192.168.20.220"),10086); //调用DatagramSocket对象的方法发送数据 //void send (DatagramPacket p)从此套接字发送数据报包 ds.send(dp); //关闭发送端 //void close 关闭此数据报套接字 ds.close(); } }
UDP接收数据
接收数据的步骤
- 创建接收端的Socket对象(DatagramSocket)
DatagramSocket (int port)构造数据报套接字并将其绑定到本地主机上的指定端口
- 创建一个数据包,用于接收数据
DatagramPacket (byte[J buf,int length)构造一个DatogramPacket用于接收长度为 length数据包
- 调用DatagramSocket对象的方法接收数据
调用DatagramSocket对象的方法接收数据
- 解析数据包,并把数据在控制台显示
byte[] getData()返回数据缓冲区
int getLength()返回要发送的数据的长度或接收到的数据的长度
- 关闭接收端
@Test public void sdTest() throws Exception { //1. 创建接收端的Socket对象(DatagramSocket) //DatagramSocket (int port)构造数据报套接字并将其绑定到本地主机上的指定端口 DatagramSocket ds = new DatagramSocket(10086); //2. 创建一个数据包,用于接收数据 //DatagramPacket (byte[J buf,int length)构造一个DatogramPacket用于接收长度为 length数据包 byte[] bytes = new byte[1024]; DatagramPacket dp = new DatagramPacket(bytes,bytes.length); //3. 调用DatagramSocket对象的方法接收数据 ds.receive(dp); //4. 解析数据包,并把数据在控制台显示 // byte[] getData()返回数据缓冲区 byte[] datas =dp.getData(); //int getLength()返回要发送的数据的长度或接收到的数据的长度 int length = dp.getLength(); String dataString = new String(datas,0,length); System.out.println("date is : "+dataString); //5. 关闭接收端 ds.close(); }
在运行该方法时,执行上面的发送方法,如何会将上面的结果进行获取,如下图所示
5 TCP通信
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟链趵一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信
Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信
Java为客户端提供了Socket类,为服务器端提供了ServerSocket类
TCP发送数据
TCP发送数据的步骤
- 创建客户端的Socket对象(Socket)
ocket (String host,int port)创建流套接字并将其连接到指定主机上的指定端口号
- 获取输出流,写数据
outputStream getoutputStream()返回此套接字的输出流
- 释放资源
@Test public void SendTest() throws Exception { //1. 创建客户端的Socket对象(Socket) //Socket (InetAddress address, int port)创建流套接字并将其连接到指定IP地址的指定端口号 // InetAddress byName1 = InetAddress.getByName("www.baidu.com"); // InetAddress byName2 = InetAddress.getByName("192.168.20.220"); // InetAddress byName3 = InetAddress.getByName("localhost"); // System.out.println(byName1+"-----"+byName2+"-----------"+byName3);//www.baidu.com/110.242.68.3-----/192.168.20.220-----------localhost/127.0.0.1 //Socket (String host,int port)创建流套接字并将其连接到指定主机上的指定端口号 Socket s = new Socket("192.168.20.220",10000); //2. 获取输出流,写数据 //outputStream getoutputStream()返回此套接字的输出流 OutputStream os = s.getOutputStream(); os.write("tcp,I am coming".getBytes()); //3. 释放资源 os.close(); }
TCP接收数据
TCP接收数据的步骤
-
创建服务器端的Socket对象(ServerSocket)
ServerSocket (int port)创建绑定到指定端口的服务器套接字
-
监听客户端连接,返回一个Socket对象
Socket accept ()侦听要连接到此套接字并接受它
-
获取输入流,读数据,并把数据显示在控制台
InputStream getInputStream()
-
释放资源
void close()
@Test public void sdTest() throws Exception { //1. 创建服务器端的Socket对象(ServerSocket) //ServerSocket (int port)创建绑定到指定端口的服务器套接字 ServerSocket ss = new ServerSocket(10086); //Socket accept ()侦听要连接到此套接字并接受它 Socket accept = ss.accept(); //2. 获取输入流,读数据,并把数据显示在控制台 InputStream is = accept.getInputStream(); byte[] bytes = new byte[1024]; int len = is.read(); String data = new String(bytes,0,len); System.out.println("data is : "+ data); //3. 释放资源 ss.close(); accept.close(); }
这篇关于java补充:网络编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南