Java-网络编程

网络编程

  • 网络编程是指在计算机网络环境中开发和实现应用程序的过程。它涉及到使用网络协议和技术来实现不同计算机之间的通信和数据交换。
  • 在网络编程中,开发人员使用网络编程库、网络协议和相关的API来实现不同层次的网络通信。常用的网络编程技术包括套接字编程(Socket Programming)和HTTP协议。

IP

  • IP是Internet Protocol(互联网协议)的缩写,它是一种网络协议,用于在互联网上进行数据通信。IP定义了互联网上的设备如何寻址和路由数据包,以确保数据能够正确地从源设备发送到目标设备。
  • IP地址是在互联网上唯一标识设备的一组数字。它由32位(IPv4)或128位(IPv6)的二进制数字组成,通常以点分十进制(IPv4)或冒号分隔的十六进制(IPv6)表示。

端口

端口表示计算机上的一个进程

  • 不同的进程有不同的端口号,用软件来区分
  • 范围0~65535
  • 端口号不能冲突
  • 分类
    • 公有端口0~1023
    • 程序注册端口1024~49151
    • 动态、私有端口49152~65535

查看进程端口号命令

netstat -ano #查看所有端口
netstat -ano | findstr "8080" #查看8080端口进程

通信协议

  • 通信协议是计算机网络中用于规定数据传输和通信过程中的规则和约定的一种规范。它定义了数据的格式、传输方式、错误检测和纠正机制、数据压缩和加密方法等,以确保不同设备之间能够正确地交换和解释数据。通信协议还规定了通信的起始和结束方式、数据传输的顺序和流量控制等内容。
  • 通信协议可以分为不同层次,每个层次负责不同的功能。常见的网络协议体系结构是TCP/IP协议栈,它包括物理层、数据链路层、网络层、传输层和应用层等多个层次。每个层次都有自己的协议,通过协议栈的层层封装和解封装,实现了数据的可靠传输和网络功能的实现。
  • 参考分层模型
    在这里插入图片描述

Java 模拟

server


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

public class TestTcpServer {
    public static void main(String[] args) {

        ByteArrayOutputStream baos = null;
        InputStream is = null;
        Socket socket = null;
        ServerSocket serverSocket = null;

        try {
            //服务器得有地址,设置端口号
            serverSocket = new ServerSocket(9999);
            //等待客户端链接
            socket = serverSocket.accept();
            //读取客户端信息
            is = socket.getInputStream();
            //管道流
            baos = new ByteArrayOutputStream();
            byte[] bytes = new byte[1024];
            int len;
            while ((len = is.read(bytes)) != -1) {
                baos.write(bytes, 0, len);
            }
            System.out.println(baos);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (baos != null) {
                try {
                    baos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (serverSocket != null) {
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}

client


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

public class TestTcpClient {
    public static void main(String[] args) {
        Socket socket = null;
        OutputStream os = null;

        try {
            //需要知道服务器IP地址,端口号
            InetAddress serverIp = InetAddress.getByName("localhost");
            //创建一个socket链接
            socket = new Socket(serverIp, 9999);
            //发送信息
            os = socket.getOutputStream();
            os.write("hello".getBytes());

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

启动服务端后启动客户端发送信息,服务的接收到信息
在这里插入图片描述

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值