IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> java——网络编程 -> 正文阅读

[网络协议]java——网络编程

1.网络编程

1.1网络编程三要素

IP地址:
要想让网络中的计算机 能够相互通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。也就是设备的标识

端口:
网络通信,本质上是两个应用程序的通信。每台计算机都有很多应用程序,那么在网络通信时,如何区分这些应用程序呢?如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的应用程序了。也就是应用程序的标识

协议:
通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则应用。在计算机网络中,这些连接和通信的规则被称为网络通信协议,他对数据的传输格式,传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据的交换,常见的协议有UDP协议和TCP协议

IP地址

在这里插入图片描述
常用命令:

  • ipconfig:查看本机IP地址
  • ping IP地址:检查网络是否畅通
  • 127.0.0.1是回送地址,也可作为本机地址,一般用来测试

InetAdress使用

为了方便对地址操作,java提供了一个InetAdress类供我们使用
这个类代表一个互联网协议(IP)地址。
InetAddress类提供的方法来将主机名解析为IP地址

该类无构造方法,方法也大都不是静态,但是有一个返回该类对象的静态方法
static InetAddress[] getAllByName(String host) 给定一个主机的名称,返回其IP地址的数组,基于系统上的配置的名称服务。 注意名称可以是机器名称,也可以是IP地址
String getHostAddress() 返回文本表示中的IP地址字符串。
String getHostName() 获取此IP地址的主机名。
代码示例:

package INTERNET;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			InetAddress address=InetAddress.getByName("LAPTOP-4IJARJ6A");
			String name=address.getHostName();
			System.out.println("name:"+name+"\n"+"ip:"+address.getHostAddress());
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

端口

设备应用程序的唯一标识

端口号:用两个字节表示的整数,它的取值范围是0~65535, 0~1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被别的应用或服务占用,会导致当前程序启动失败

协议

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

UDP通信程序

UDP通信原理

在这里插入图片描述

UDP发送数据

发送数据的步骤:

  • 创建发送端的Socket对象(DatagramSocket)
  • 创建数据,并把数据打包
  • 调用DatagramSocket对象发送数据
  • 关闭发送端

DatagramPacket
这类表示一个数据报包。
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
发送有偏置 ioffsetto指定端口号指定主机上的数据包长度 length数据报包结构。
SendDemo

package INTERNET;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class SendDemo {
	public static void main(String[] args) throws IOException {
		//创建发送端的Socket对象 DatagramSocket() 构建一个数据报套接字绑定到本地主机的任何可用的端口。 
		DatagramSocket ds=new DatagramSocket();
		
		//创建数据,并把数据打包
		//DatagramPacket(byte[] buf, int length, InetAddress address, int port) 指定主机上的指定端口发送数据包的长度 length数据报包结构。 
		byte []buf="Hello,Socket!!".getBytes();
		InetAddress address=InetAddress.getByName("192.168.235.1");
		System.out.println("发送消息:"+new String(buf));
		DatagramPacket dp=new DatagramPacket(buf,0,buf.length,address,10086);
		
		//调用DatagramSocket对象发送数据
		//void send(DatagramPacket p) 从这个套接字发送数据报包。  
		ds.send(dp);
		
		//关闭发送端
		ds.close();
		
	}
}

UDP接收数据

接收数据的步骤:

  • 创建接收端的Socket对象(DatagramSocket)
  • 创建一个数据包,用于接收数据
  • 调用DatagramSocket对象的方法接收数据
  • 解析数据包,并把数据在控制台显示
  • 关闭接收端

ReceiveDemo

package INTERNET;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class ReceiveDemo {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		//创建接收端Socket对象
		//DatagramSocket(int port) 构建一个数据报套接字绑定到本地主机的指定端口。 
		DatagramSocket ds=new DatagramSocket(10086);
		
		//创建一个数据包用于接收数据
		//DatagramPacket(byte[] buf, int length) 接收数据包长度 length DatagramPacket构建。 
		byte[] buf=new byte[1024];
		DatagramPacket dp=new DatagramPacket(buf,buf.length);
		
		//调用DatagramSocket对象接收数据
		ds.receive(dp);
		
		//解析数据包,并把数据在控制台显示
		byte[] datas=dp.getData();
		System.out.println("数据是:"+new String(datas,0,dp.getLength()));
		
		//关闭接收端
		ds.close();
	}

}

在这里插入图片描述

TCP通信程序

TCP通信原理

在这里插入图片描述

TCP发送数据

发送数据的步骤:

  • 创建客户端的Socket对象
  • 获取输出流,写数据
  • 释放资源

ClientDemo:

package INTERNET;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientDemo {

	public static void main(String[] args) throws UnknownHostException, IOException {
		// TODO Auto-generated method stub
		//Socket(InetAddress address, int port) 创建一个流套接字,并将其与指定的IP地址中的指定端口号连接起来。
		//Socket(String host, int port) 创建一个流套接字,并将其与指定的主机上的指定端口号连接起来。
		//创建一个Socket对象
		Socket client=new Socket("192.168.235.1",25538);
		
		//OutputStream getOutputStream() 返回此套接字的输出流 
		//获取输出流,写数据
		OutputStream w=client.getOutputStream();
		w.write("hello,I am coming".getBytes());
		
		client.close();
	}

}

TCP接收数据

接收数据的步骤:

  • 创建服务器端Socket对象(ServerSocket)
  • 获取输入流,读数据,并把数据显示在控制台
  • 释放资源

ServerDemo:

package INTERNET;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		//ServerSocket(int port) 创建一个服务器套接字,绑定到指定的端口。
		//创建服务器端的Socket对象
		ServerSocket server=new ServerSocket(25538);
		
		
		//Socket accept() 监听要对这个套接字作出的连接并接受它。 
		Socket s=server.accept();
		
		//获取输入流
		InputStream is=s.getInputStream();
		
		System.out.print("接收到:");
		int b;
		while((b=is.read())!=-1) {
			System.out.print((char)b);
		}
		server.close();
		
	}

}

在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:32:18  更:2022-03-06 13:32:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:33:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码