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网络通信V1-C-S消息发送 -> 正文阅读

[网络协议]Java网络通信V1-C-S消息发送

目录

计算机网络基础知识

IP

公网

局域网

本地计算机网络

DNS

Java网络通信

ServerSocket

?Socket

连接模型

Server

Client

运行结果


计算机网络基础知识

IP

IP:地址

公网

公网:任何地方去访问这个IP,都是指定一台机器

局域网

局域网:比如路由器下,所有机器都组成一个网络。同一个网络中的其他机器可以通过这个IP地址来访问你的机器。

本地计算机网络

在自己的计算机中,有一个本机回环,就比如localhost,默认为127.0.0.1。一般在127.0.0.1后面会跟上端口。在本地计算机中,会有多个进程。计算机就会给这些进程分配端口号。我们可以通过cmd命令,来查看,我们计算机中有哪些进程在占用哪些端口号netstat这个命令

可以看到这些进程都是遵从TCP协议的,注意其本地地址。

本地计算机中的端口号最多有两个字节Byte,一般的前1024个端口号一般是系统占用的,我们自己想去设置就一般去设置成10000以后的端口号。

DNS

DNS服务:根服务器。我们可以在cmd命令中ping一下百度的网址。

我们可以看见百度域名的IP地址是 36.152.44.96,但我们一般去搜索引擎上面不会直接写IP地址而是输入域名,IP地址不容易记忆,域名好记忆嘛。DNS做的工作就像是一个哈希表,IP地址和域名是一一对应的关系。

Java网络通信

ServerSocket

jdk1.8中的net包下会有一个ServerSocket类,我们可以去API文档中先查看下。

?

?Socket

和后面提及的Socket是一样的都是套接字。我们将用到ServerSocket的第二个构造方法,就是参数是端口号的那个。那我们怎么来理解这个套接字呢!我化了一个模型

连接模型

?ServerSocket是去监听客户端的连接的,一开始这个管道是阻塞的,当有端口请求发送上来的时候就会去建立一个连接,拿到一个Socket对象。然后服务端拿到Socket对象之后,获取这个对象的输入输出流,我们就可以进行写入和读取数据。这一章我们先来建立连接直接通信。详细的发送消息放到后面。下面就是详细的代码,我就写了两个类,一个服务端,一个客户端。

注意:服务端的端口号就是整个程序这个进程在本地计算机中运行的端口号,客户端的端口号是我们自己设置的!

Server

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

public class Server {

    //初始化默认的ServerSocket对象为空
    private ServerSocket serverSocket = null;

    //服务端连接的方法
    public void ConnectServer(){

        //捕获异常
        try {
            //实例化severSocket对象
            serverSocket = new ServerSocket(50000);
            //监听Socket的连接,未监听到之前  阻塞状态
            System.out.println("监听Socket对象中,处于阻塞状态中……");
            Socket socket_server = serverSocket.accept();
            //监听到之后,生成并返回一个Socket对象
            System.out.println("连接成功" + "  "+ socket_server.getInetAddress() + " " + socket_server.getPort());

            //从socket_server上获取输出流
            OutputStream os = socket_server.getOutputStream();
            //定义一个字符串
            String msg = "I am  server";
            //发送
            os.write(msg.getBytes());

        } catch (IOException e) {//抛出并处理异常
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Server server = new Server();
        server.ConnectServer();
    }
}

Client

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

public class Client {

    //初始化一个Socket对象为空
    private Socket socket_cliect = null;

    //客户端连接的方法
    public void ConnectCliect(){

        //捕获异常
        try {
            //将socket_client实例化
            socket_cliect = new Socket("localhost", 50000);
            System.out.println("启动客户端");

            //从socket_client上获取输入流
            InputStream is = socket_cliect.getInputStream();
            System.out.println("开始读取信息");
            int readmsg = 0;
            while (true){
                readmsg = is.read();
                if(readmsg == -1){
                    break;
                }
                System.out.print((char)readmsg);
            }

        } catch (IOException e) {//抛出并处理异常
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Client client = new Client();
        client.ConnectCliect();
    }
}

运行结果

?

?

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

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