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网络学习笔记

一:InetAddress类

1.什么是InetAddress

此类表示Internet协议(IP)地址。

2.常见用法:

            InetAddress inetAddress = InetAddress.getByName("www.jd.com");//通过域名创建一个InetAddress对象
            InetAddress inetAddress1 = InetAddress.getLocalHost();//创建本机的InetAddress对象
            InetAddress inetAddress2= InetAddress.getByName("127.0.0.1");//通过IP创建InetAdress对象
            System.out.println(inetAddress);//得到域名+IP的字符串--www.jd.com/180.97.189.3
            System.out.println("ip:"+inetAddress.getHostAddress());//ip
            System.out.println("域名:"+inetAddress.getHostName());//域名//或者自己电脑的名字
            System.out.println(inetAddress1);

3.补充说明

本机IP:127.0.0.1
IPv4:
IPv4.的IP地址由32位二进制数组成,为便于使用,常以XXX.XXX.XXX.XXX形式表现,每组XXX代表小于或等于255的10进制数,该表示方法称为点分十进制。 例如維基媒體的一个IP位址是208.80.152.2。 位址可分为A、B、C、D、E五大类,其中E类属于特殊保留地址。
IPv6:
IPv6 地址的长度为128 位,由八个16 位字段组成,相邻字段用冒号分隔。 IPv6 地址中的每个字段都必须包含一个十六进制数字,而IPv4 地址则以点分十进制表示法表示

二:Socket

1.什么是Socket

Socket:套接字
该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通讯的端点。
套接字的实际工作由SocketImpl类的实例执行。 应用程序通过更改创建套接字实现的套接字工厂,可以配置自己创建适合本地防火墙的套接字。

2.Socket常用方法

Socket socket = new Socket(InetAddress serverIp,String port);
//通过InetAddress对象和端口号创建连接型Socket类对象
 socket.getInputStream();//得到输入流,返回InputStrea对象
 socket.getOutputStream();//获取输出流,返回OutputStream对象
 socket.close();//关闭连接
 ServerSocket serverSocket = new ServerSocket(String port);//通过端口号创建接受型ServerSocket类对象
 serverSocket.accept();//等待用户连接,并返回一个Socket对象,用于接收用户传输的信息
 serverSocket.close();//关闭连接

3.Socket应用案例

TCP功能实现

4.DatagramSocket和DatagramPacket 类

1.DatagramSocket介绍

此类表示用于发送和接收数据报数据包的套接字。

数据报套接字是分组传送服务的发送或接收点。 在数据报套接字上发送或接收的每个数据包都被单独寻址和路由。 从一个机器发送到另一个机器的多个分组可以不同地路由,并且可以以任何顺序到达。

示例: DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888));其中相当于: DatagramSocket s = new DatagramSocket(8888);这两种情况都将创建一个DatagramSocket,可以在UDP端口8888上接收广播。

2.DatagramPacket 介绍

该类表示数据报包。
数据报包用于实现无连接分组传送服务。 仅基于该数据包中包含的信息,每个消息从一台机器路由到另一台机器。 从一台机器发送到另一台机器的多个分组可能会有不同的路由,并且可能以任何顺序到达。 包传送不能保证

3.UDP的使用步骤

发送端:

		//1.建立连接
        DatagramSocket socket = null;
        //2.获得连接对象
        //获取对方的IP和端口号进行连接
        InetAddress Ip = null;
        int port = 9999;
        //4.创建数据包
        String msg = "你好";
        DatagramPacket packet = null;
        try {
            socket = new DatagramSocket();
            Ip = InetAddress.getByName("localhost");
            //数据,数据的长度起始,发送的地址
            packet = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,Ip,port);
            //5.发送包
            socket.send(packet);

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //6.关闭资源
            if (socket != null){
                socket.close();
            }
        }

接收端:

        DatagramSocket socket = null;
        try {
            //1.开启自己的端口(客户端连接的端口)
            socket = new DatagramSocket(9999);
            //2.接收数据
            byte[] buffer = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
            socket.receive(packet);//堵塞接收
            //3.处理数据
            byte[] target = packet.getData();
            int len=0;
            if (target.length!=0){
                for (int i=0;i<target.length;i++){
                    if (target[i]=='\0'){
                        len=i;
                        break;
                    }
                }

            }
            //4.输出数据
            System.out.println("from:"+packet.getAddress());
            System.out.println(new String(target,0,len));

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (socket!=null){
                socket.close();
            }
        }

4.UDP实现在线聊天案例

UDP实现在线聊天案例

三,URL

内容比较简单直接上实例代码

package URL;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;

import java.net.URL;

public class URLTest {
    public static void main(String[] args) {
        HttpURLConnection connection = null;
        InputStream in = null;
        FileOutputStream fos = null;
        try {
            //获取百度的HTML页面//也可以获取URL对应的音频,视屏
            URL url = new URL("https://www.baidu.com/");
            //通过URL打开连接
            connection = (HttpURLConnection) url.openConnection();
            //获取连接的输入流
            in = connection.getInputStream();
            //保存文件
            fos = new FileOutputStream("1.html");//文件后缀与获取的文件对应
            byte[] buffer = new byte[1024];
            int len = 0;
            while((len = in.read(buffer))!=-1){
                fos.write(buffer,0,len);
            }
            //获取连接的状态
            String msg = connection.getResponseMessage();
            System.out.println("连接状态:"+msg);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            if (fos!=null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (in !=null){
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null){
                connection.disconnect();
            }
        }
    }
}

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 11:07:19  更:2021-08-02 11:08:36 
 
开发: 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/25 17:53:34-

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