JavaDay11
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的更多相关文章
随机推荐
- truncate table,drop,delete的区别
TRUNCATE TABLE 在功能上与不带 Where 子句的 Delete 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 Delete 速度快,且使用的系统和事务日志资源 ...
- 死磕java(1)
java入门 package com.sougn.new1; public class new1 { /** * @param args */ public static void main ...
- java配置文件集
<!-- 激活组件扫描功能,扫描aop的相关组件组件 --> <context:component-scan base-package="com.yingjun.ssm.a ...
- 【题解】P1559 运动员最佳匹配问题
[题目](https://www.luogu.com.cn/problem/P1559) 题目描述 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组 ...
- 实例探究Aspectj,解析SentinelResourceAspect
为了学习SentinelResourceAspect,这篇文章里我用Aspectj实现一个AOP实例,一起来看下. Sentinel 提供了 @SentinelResource 注解用于定义资源,支持 ...
- tar命令详解及使用实例
tar命令 [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 …. 参数: -c :创建压缩文件 -x :解开压缩文件 -t :查看tar包里面的文件! 上面3个参数只能 ...
- SNMP协议交互学习-获取udp的udpindatagrams
MIB的组织结构,如下左图,对于udp来说1.3.6.1.2.1.7,组织如下右图,包括4个标量和1个表格 udp节点在LwIP中的定义如下: ] = { , , , , }; ] = { (stru ...
- ubuntu 配置网卡,DNS, iptables
# 配置静态ip地址 root@simon:~# vim /etc/network/interfaces auto enp4s0 iface enp4s0 inet static address 19 ...
- Shell脚本 server rsync 控制脚本
[root@backup ~]# vim /etc/init.d/rsync#!/bin/bash #this script for start|stop rsync daemon service s ...
- VMware 克隆 CentOS 后网卡信息修改
概述 在我们需要多台 CentOS 虚拟机的时候,对已有虚拟机的系统进行克隆或是复制.但是这样做又有一个问题,克隆出来的虚拟机启动的时候你输入命令:ifconfig,eth0 网卡信息没了,只有一个 ...