4.14日网络编程学习

1.网络编程三要素

1.IP地址:

**IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。**要想使网络中的计算机能够进行通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接受数据的计算机或者发送数据的计算机。

在TCP/IP协议中,这个标识号就是IP地址,它可以唯一标识一台计算机,目前,IP地址广泛使用的版本是IPv4,它是由4个字节大小的二进制数来表示,如:00001010000000000000000000000001。由于二进制形式表示的IP地址非常不便记忆和处理,因此通常会将IP地址写成十进制的形式,每个字节用一个十进制数字(0-255)表示,数字间用符号"."分开,如 "192.168.1.100"。

随着计算机网络规模的不断扩大,对IP地址的需求也越来越多,IPV4这种用4个字节表示的IP地址面临枯竭,因此IPv6 便应运而生了,IPv6使用16个字节表示IP地址,它所拥有的地址容量约是IPv4的8×1028倍,达到2128个(算上全零的),这样就解决了网络地址资源数量不够的问题。

说白了,IP其实就是每个设备在网络中的编号

2.端口:

网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分这些进程呢?

如果说IP地址 可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。

3.网络通信协议

提到传输层的两个重要的高级协议,分别是UDP和TCP,其中UDP是User Datagram Protocol的简称,称为用户数据报协议,TCP是Transmission Control Protocol的简称,称为传输控制协议。

2.首先来进行IP的学习

想要对IP进行操作,就避不开要用InetAdress这个类

java 复制代码
import java.net.InetAddress;
import java.net.UnknownHostException;

public class inetaddress {
    public static void main(String[] args) throws UnknownHostException {
        //1.获取inetAddress对象
          //IP的对象,也可以说是一台电脑的对象
        InetAddress address=InetAddress.getByName("192.168.50.155");
        //DESKTOP-D4I5DGV   电脑名
        InetAddress address1=InetAddress.getByName("DESKTOP-D4I5DGV");
        System.out.println(address1);


        //获取主机名
        String s=address.getHostName();
        System.out.println(s);

        //返回文本中显示的IP字符串(获取电脑对象的IP)
        String str=address.getHostAddress();
        System.out.println(str);

    }
}

3.UDP

1.UDP的发送信息

步骤:1.创建对象

2.打包数据

3.发送数据

4.清除缓存

java 复制代码
public class SendTest {
    //发送数据
    public static void main(String[] args) throws IOException {
        //1.创建对象
        DatagramSocket ds=new DatagramSocket();

        //2.打包数据
        Scanner sc=new Scanner(System.in);
        while (true) {
            String str=sc.nextLine();
            if("886".equals(str)){
                break;
            }
            byte[] bytes=str.getBytes();

            InetAddress ia=InetAddress.getByName("127.0.0.1");

            int port=10086;

            DatagramPacket dp=new DatagramPacket(bytes,bytes.length,ia,port);

            //3.发送数据
            ds.send(dp);
        }

        //4.清除缓存
        ds.close();
    }
}

2.UDP的接受消息

步骤:

1.创建对象

2.接受消息

3.解压消息

4.释放内存

java 复制代码
public class ReceiveTest {
    public static void main(String[] args) throws IOException {
        //接受数据
        //1.创建对象
        DatagramSocket ds=new DatagramSocket(10086);

        //2.接受数据
        byte[] bytes=new byte[1024];
        DatagramPacket dp=new DatagramPacket(bytes, bytes.length);
        //while (true) {
            ds.receive(dp);

            //3.解压数据
            byte[] data= dp.getData();
            int len= dp.getLength();
            InetAddress ia=dp.getAddress();
            int port=dp.getPort();

            System.out.println(new String(data,0,len));
//            System.out.println(ia);
//            System.out.println(port);
        //}

        //4.释放内存
        ds.close();
    }
}

4.UCP

考察的主要是服务器与客户端,因此我们需要做一个服务器与客户端

1.客户端

java 复制代码
public class Client {
    //TCP协议客户端,用来发送数据
    public static void main(String[] args) throws IOException {
        //1.创建socket对象
        //细节:在创建对象的同时,会连接服务器,如果连接不上,则报错
        Socket socket=new Socket("127.0.0.1",10006);//服务器的IP,以及链接的端口


        //2.从连接通道中获取输出流
        OutputStream os=socket.getOutputStream();
        //写出数据
        os.write("你好".getBytes());

        //3.释放资源
        os.close();
        socket.close();
    }
}

2.服务器

java 复制代码
public class Server {
    //TCP协议服务端,用于接受消息
    public static void main(String[] args) throws IOException {
        //1.创建服务器 ServerSocket
        //链接的端口必须与用户端一致
        ServerSocket ss=new ServerSocket(10006);


        //2.监听客户端链接
        Socket socket=ss.accept();


        //3.从连接通道中获取输入流,读取数据
        InputStream is=socket.getInputStream();
        //用转换流,将字节流变成字符流
        InputStreamReader isr=new InputStreamReader(is);
        int b;
        while(((b=isr.read()))!=-1){
            System.out.print((char)b);
        }

        //4.释放资源
        socket.close();
        ss.close();
    }
}
相关推荐
qinyia3 分钟前
Wisdom SSH 是一款创新性工具,通过集成 AI 助手,为服务器性能优化带来极大便利。
服务器·人工智能·ssh
liulilittle4 小时前
OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现
网络·c++·网络协议·tcp/ip·算法·ip·通信
晓衣4 小时前
2025“獬豸杯”全国电子数据取证竞赛-k8s服务器取证wp
服务器·经验分享·程序人生·网络安全·容器·kubernetes·学习方法
北极光SD-WAN组网6 小时前
从0到1搭建某铝箔智慧工厂网络:5G与WiFi 6助力智能制造
网络·5g·制造
阿昭L6 小时前
HTTP原理
网络·网络协议·http
2301_794333916 小时前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
Hello_Embed6 小时前
STM32HAL 快速入门(十九):UART 编程(二)—— 中断方式实现收发及局限分析
笔记·stm32·单片机·嵌入式硬件·学习
天上的光7 小时前
关于学习的一些感悟
学习
hazy1k7 小时前
STM32H750 RTC介绍及应用
网络·stm32·实时音视频
没书读了7 小时前
考研复习-计算机网络-第三章-数据链路层
网络·计算机网络·考研