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. 《ASP.NET Core 高性能系列》静态文件中间件

    一.概述 静态文件(如 HTML.CSS.图片和 JavaScript等文件)是 Web程序直接提供给客户端的直接加载的文件. 较比于程序动态交互的代码而言,其实原理都一样(走Http协议), ASP ...

  2. CCF_201612-3_炉石传说

    http://115.28.138.223/view.page?gpid=T45 模拟. #include<iostream> #include<cstring> #inclu ...

  3. CCF_201612-2_火车购票

    http://115.28.138.223/view.page?gpid=T46 水. #include<iostream> #include<cstring> #includ ...

  4. HDU 6274 Master of Sequence (暴力+下整除)

    题意 两个1e5的数组a,b,定义\(S(t)=\left \lfloor \frac{t-b_i}{a_i} \right \rfloor\),有三个操作 1 x y:将\(a[x]\)变为\(y\ ...

  5. 使用IDEA详解Spring中依赖注入的类型(上)

    使用IDEA详解Spring中依赖注入的类型(上) 在Spring中实现IoC容器的方法是依赖注入,依赖注入的作用是在使用Spring框架创建对象时动态地将其所依赖的对象(例如属性值)注入Bean组件 ...

  6. 从Golang中open的实现方式看Golang的语言设计

    Golang有很多优点: 开发高效:(C语言写一个hash查找很麻烦,但是go很简单) 运行高效:(Python的hash查找好写,但比Python高效很多) 很少的系统库依赖:(环境依赖少,一般不依 ...

  7. ELF文件之四——使用链接脚本-2个函数-data

    main.c ; int main() { ; } int add() { ; } main.o 反汇编可以看到多了.text节的反汇编,存储的是全局变量的初始化数值 main.o对比,text段后面 ...

  8. 兄弟连 企业shell笔试题 16-31

    企业实践题16:企业案例:写网络服务独立进程模式下rsync的系统启动脚本 例如:/etc/init.d/rsyncd{start|stop|restart} .要求:1.要使用系统函数库技巧.2.要 ...

  9. STP 生成树协议 RSTP 快速生成树

    STP(Spanning Tree Protocol)是生成树协议的英文缩写 该协议可应用于在网络中建立树形拓扑,消除网络中的环路,并且可以通过一定的方法实现路径冗余,但不是一定可以实现路径冗余.生成 ...

  10. 大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器

    说明:大数据时代,传统运维向大数据运维升级换代很常见,也是个不错的机会.如果想系统学习大数据运维,个人比较推荐通信巨头运维大咖的分享课:https://url.cn/5HIqOOr,主要是实战强.含金 ...