Java learning_Day11

本人学习视频用的是马士兵的,也在这里献上

<链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA>

提取码:fobs

内容

  • 网络基础
  • 网络通信协议及接口
  • IP 协议
  • TCP 协议 和 UDP 协议
  • Socket

网络基础

  • 什么是计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而是众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。
  • 计算机网络的主要功能
    • 资源共享
    • 信息传输与集中处理
    • 均衡负荷与分布处理
    • 综合信息服务(www/综合业务数字网络 ISDN)

网络通信协议及接口

  • 什么是网络通信协议:计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
  • 网络通信接口:为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换。接口包括两部分:
    • 硬件装置:实现结点之间的信息传送
    • 软件装置:规定双方进行通信的约定协议

通信协议分层的思想

  • 为什么要分层

    由于结点之间联系很复杂,在制定协议时,把复杂成分分解成一些简单的成分,再将它们复合起来。最常用的复合方式是层次关系,即同层之间可以通信、上一层可以调用下一层,而与再下一层不发生关系。各层互不影响,利于系统的开发和扩展。
  • 通信协议的分层规定

    把用户应用程序作为最高层,把物理通信线路作为最底层,将其间的协议处理分为若干层,规定每层处理的任务,也规定每层的接口标准。

参考模型

数据封装

数据拆分

IP 协议

  • IP(Internet Protocol)协议是网际层的主要协议,支持网间互连的数据报通信。它提供主要功能有:

    • 无连接数据报传送
    • 数据报路由选择和差错控制

TCP 协议 和 UDP 协议

  • TCP(transmission control protocol)

    是专门设计用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议。它是一种面向连接的协议。TCP 连接是字节流而非报文流。
  • UDP(user data protocol)

    UDP 向应用程序提供了一种发送到封装的原始 IP 数据报的方法、并且发送时无需建立连接。是一种不可靠的连接。

Socket

  • 两个 Java 应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一段称为 Socket。
  • Socket 通常用来实现 client-server 连接。
  • java.net 包中定义的两个类 Socket 和 ServerSocket,分别用来实现双向连接的 client 和 server 端。
  • 建立连接时所需的寻址信息为远程计算机的 IP 地址和端口号(Port number)

TCP Socket 通信模型

示例

Server 端

import java.net.*;
import java.io.*; public class TCPServer { public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(6666);
while (true) {
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
System.out.println(dis.readUTF());
dis.close();
s.close();
}
}
}

Client 端

import java.net.*;
import java.io.*; public class TCPClient { public static void main(String[] args) throws Exception {
Socket s = new Socket("127.0.0.1", 6666);
OutputStream os = new DataOutputStream(s.getOutputStream());
DataOutputStream dos = new DataOutputStream(os);
Thread.sleep(3000);
dos.writeUTF("hello server!");
dos.flush();
dos.close();
s.close();
}
}

UDP

  • 不可靠
  • 效率高
  • 数据报/非连接
    • 音频
    • 视频
    • ...

示例

Sever 端

import java.net.*;
import java.io.*; public class TestUDPServer { public static void main(String[] args) throws Exception{
byte[] b = new byte[1024];
DatagramPacket dp = new DatagramPacket(b, b.length);
DatagramSocket ds = new DatagramSocket(4567); while (true) {
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(b);
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readLong());
}
}
}

Client 端

import java.io.*;
import java.net.*; public class TestUDPClient { public static void main(String[] args) throws Exception{
Long l = 10000L;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeLong(l); byte[] b = baos.toByteArray();
System.out.println(b.length); DatagramPacket dp = new DatagramPacket(b, b.length, new InetSocketAddress("127.0.0.1", 4567));
DatagramSocket ds = new DatagramSocket(7777);
ds.send(dp);
ds.close();
}
}

JavaDay11的更多相关文章

随机推荐

  1. pico g2 触摸板手柄射线检测---for unity

    1.pico g2手柄射线检测UI,需要在canvas添加Graphic Raycaster脚本和Pvr_Ui Canvas脚本. 2.删除掉原有的maincamera,将Pvr_unitySDK下h ...

  2. 实验10: RIP

    实验7-1 :  RIPV1 实验目的通过本实验可以掌握:1. 在路由器上启动RIPv1 路由进程2. 启用参与路由协议的接口,并且通告网络3. 理解路由表的含义4. 查看和调试RIPv1 路由协议相 ...

  3. MOTS:多目标跟踪和分割论文翻译

    MOTS:多目标跟踪和分割论文翻译 摘要: 本文将目前流行的多目标跟踪技术扩展到多目标跟踪与分割技术(MOTS).为了实现这个目标,我们使用半自动化的标注为两个现有的跟踪数据集创建了密集的像素级标注. ...

  4. 使用PyCharm创建并运行一个Python项目

    (1)首先,在欢迎界面点击“Create New Project”: (2)在“New Project“左侧面板点击”Pure Python“,右侧Location选择自己要创建项目的路径(一般情况, ...

  5. (三)(2)wait/notify实现生产者-消费者模型,join方法

    生产者,消费者模型 举个例子来说明,厨师,服务员,厨师做菜,服务员上菜,如果厨师没有做好菜,那么服务员就无法上菜,厨师做好了菜,然后通知服务员消费(上菜).在这个过程之中,厨师扮演的就是生产者,服务员 ...

  6. (一)maven基本配置,概念,常用命令

    ---恢复内容开始--- 首先明白maven是什么, maven是一个自动化构建工具,可以将你一个项目的html,java,css,js等代码构建成一个可发布的产品,相当于就是将你从写完代码到部署完成 ...

  7. num09---建造者模式

    建造者模式: 核心思想:将产品 和 产品建造过程解耦

  8. NLP(二十一)人物关系抽取的一次实战

      去年,笔者写过一篇文章利用关系抽取构建知识图谱的一次尝试,试图用现在的深度学习办法去做开放领域的关系抽取,但是遗憾的是,目前在开放领域的关系抽取,还没有成熟的解决方案和模型.当时的文章仅作为笔者的 ...

  9. 某oa系统的审计

    title: 某oa系统的审计 date: 2018-03-07 17:18:16 tags: --- 信呼OA 闲着没事,java学累了来整理下以前审的一个觉得很有意思的cms,这个作者写的比较灵活 ...

  10. vue路由核心要点(vue-router)

    目录 目录 1.vue-router 是什么? 2.如何使用v-router? 3.vue-router跳转和传参 4.vue-router实现的原理 两种模式 5.vue-router 有哪几种导航 ...