当前位置: 首页 > news >正文

小白学习java第12天(上):网络编程

首先对于网络编程,我们的先知道网络,就是其实对我我这中小白来说,搞清楚为什么比怎么做要来的更为深刻一点!

我需要还一个建议流程图:

当然这个只是简单的示意图,以我自己的电脑为了,我们可以看一下我的电脑上面的情况cmd + netstat -ano

了解原理之后,编程就显得比较简单了,因为对于java来说万物皆为对象,对于ip和协议这些都会有自己的类,我们只需要对其进行创建对象即可!!!

ip:

(唯一定位一台网络计算机,对于本机的ip地址就是127.0.0.1本机就是localhost,很多的关于ip的细节后面我会慢慢进行补充)

然后就说一下ip和域名是什么关系,其实很简单就是你一串数字肯定很难记,但是你输入域名肯定好记一点(IP地址与域名是一对多的关系。一个ip地址可以对应多个域名,但是一个域名只有一个IP地址。IP地址是数字组成的,不方便记忆,所以有了域名,通过域名地址就能找到ip地址。)

这个可以看出你去访问www.baidu.com这个就能看出地址(域名/IP地址),只是写数字不好记!

端口:(后面我再学习操作系统的时候还会详细进行思考一下这里面的底层逻辑)

端口表示计算机的进程(好比ip是一栋楼,然后门牌号就是端口!)

不同的进程有着不同的端口号(范围就是0-65535,但是有不同的协议,又可以分为TCP,UDP所以就是65535*2:

通讯协议:

网络通讯协议:速率,传输码率,代码结构,传输控制...其实我也是太知道里面的很复杂,如果有机会后面会了解一下,那我们就进行分层(TCP/IP协议族,实际上是一组协议)

TCP:

用户传输协议(就是打电话,要链接好了才能传输)

连接稳定(三次握手、四次挥手)

-------------------------------------

三次握手:

A你愁啥,

B瞅你咋的,

A然后就干一架了

四次挥手:

A我要走

B你真的要走了吗

B你真的真的要走了吗

A我真的走了

---------------------------------

传输完成、释放连接、效率低

UDP:

用户数据报协议(就像发短信,不用连接好,发出去就不管)

不连接,不稳定

不管有没有准备好,都可以发给你

TCP就是客户端和服务器

服务端:

package demo02;

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

//服务段
public class TcpServerDemo01 {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket =null;
        Socket accept = null;
        InputStream inputStream = null;
        ByteArrayOutputStream byteArrayOutputStream = null;
        try {
            //要有一个地址供客户端访问,现在这个地址就是localhost:9999
             serverSocket = new ServerSocket(9999);

            //等待客户端连接过来
             accept = serverSocket.accept();

            //读取客户端消息
             inputStream = accept.getInputStream();

            byteArrayOutputStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len;
            while ((len = inputStream.read(buffer) )!= -1){
                byteArrayOutputStream.write(buffer,0,len);
            }
            System.out.println(byteArrayOutputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }finally {
            //关闭资源
            serverSocket.close();
            accept.close();
            inputStream.close();
            byteArrayOutputStream.close();
        }
    }
}

服务端:

package demo02;

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

//客户端
public class TcpClientDemo01 {
    public static void main(String[] args) throws IOException {
        Socket socket = null;
        OutputStream outputStream = null;

        try {
            //要知道服务端的地址
            InetAddress serverIp = InetAddress.getByName("localhost");
            System.out.println(serverIp);
            //端口号
            int port = 9999;

            //创建socket连接
            socket = new Socket(serverIp,port);

            //发送数据
             outputStream = socket.getOutputStream();

            outputStream.write("你好,我是客户端!".getBytes());


        } catch (Exception e) {
            throw new RuntimeException(e);
        }finally {
            socket.close();
            outputStream.close();
        }
    }

}

流程图:

(这里面的io流要进行详细的解释,后面我单独出一篇!!!)

相关文章:

  • Rasa中config.yml文件信息详细解释
  • RCE漏洞学习
  • 【Vue #3】指令补充样式绑定
  • 仿真每日一练 | Workbench移动载荷作用下旋转楼梯瞬态特性分析
  • idea 保存格式化 但是不格式化 Xml
  • 【AI论文】VCR-Bench:视频链式思考推理的综合评估框架
  • 如何查看自己 Android App 的私有数据?从 `adb backup` 到数据提取全过程
  • 01_核心系统下的技术原理解析
  • 从代码学习深度学习 - Bahdanau注意力 PyTorch版
  • 探索DeepFM:双重特征交互模型让CTR预测更精准
  • springcloud整理
  • inux 基础入门操作 第十章 C++多线程介绍 2
  • 计算齿轮故障频率|平行轴|行星轮齿轮
  • 八股系列(分布式与微服务)持续更新!
  • 初阶数据结构--链式二叉树
  • 解决电脑问题——突然断网!
  • 有宽阔的意思的单词
  • 2025认证杯一阶段各题需要使用的模型或算法(冲刺阶段)
  • Python及C++中的集合
  • 【软考系统架构设计师】信息安全技术基础
  • 湖北网站建设公司/电商平台运营方案思路
  • 深圳产品型网站建设/微信crm系统
  • 做网站的公司重庆/网络销售怎么学
  • 用wordpress作下载站点/亚马逊站外推广网站
  • 网站开发项目延期说明/seo刷排名公司
  • 太原建设工程信息网/seo技术建站