【博学谷学习记录】超强总结,用心分享|架构师-前置知识-Netty网络编程基础

涉及知识点

  • io的基本操作

  • 文件上传 --- 文件系统 与 内存之间的读取 操作

1 入门

1.1 网络编程三要素

协议 + IP + port

1.2 DOS常用命令:

ipconfig:查看本机IP地址

ping IP地址:检查网络是否连通

1.3 应用

一个对象 ---- InetAddress

代码演示


public class InetAddressDemo {
	public static void main(String[] args) throws UnknownHostException {
		//InetAddress address = InetAddress.getByName("itheima");
		InetAddress address = InetAddress.getByName("192.168.1.66");
		//public String getHostName():获取此IP地址的主机名
		String name = address.getHostName();
		//public String getHostAddress():返回文本显示中的IP地址字符串
		String ip = address.getHostAddress();
		System.out.println("主机名:" + name);
		System.out.println("IP地址:" + ip);
	}
}


2 UDP通信程序

2.1 UDP 发送数据【应用】

Java中的UDP通信

UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个

Socket只是发送,接收数据的对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户

端和服务器的概念

Java提供了DatagramSocket类作为基于UDP协议的Socket

2.2 UDP三种通讯方式【理解】

单播

单播用于两个主机之间的端对端通信

组播 --- 客户端 发组播地址 服务端将自己的IP绑定到这个组播地址

组播用于对一组特定的主机进行通信

广播 --- 客户端 发广播地址 225.225.225.225 (四个225)

广播用于一个主机对整个局域网上所有主机上的数据通信

3 TCP发送数据【应用】

Java中的TCP通信

Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并

通过Socket产生IO流来进行网络通信。

Java为客户端提供了Socket类,为服务器端提供了ServerSocket类

4 TCP 程序文件上传练习【应用】

5 文件上传的优化

5.1 文件名字重复问题

uuid

5.2 并发操作

server端要循环接收 客户端发来的请求

使用线程来完成操作 --- 计网的理论

不要显示创建线程,要使用线程池创建线程

偏底层,与业务无关

网络编程API --- socket编程

五层:物理层 链路层 网络层 传输层 应用层

由操作系统内核中的内核协议栈,负责TCP/IP协议,对应用是中立的

操作系统向上暴露socket的API给应用层

TCP控制连接

重点:网络IO操作

java IO模型

涉及操作系统给得不同的函数

io的两次过程 数据从网卡拷贝到内核空间 ,又从内核空间拷贝到用户空间

阻塞与非阻塞io

非阻塞 --- 应用做个轮询

阻塞 --- b = os.read() != -1

同步与异步

同步 --- 应用程序主动去问os

异步 --- 一般是非阻塞,在os写一个回调函数,os主动往应用传

常见的IO模型

上层控制不了,只有os来提供的能力

os提供的IO模型

NIO底层基于IO的多路复用技术

复用IO的基本思路就是通过select或poll、epoll来监控多fd ,来达到不必为每个fd创建一个对应的监控线程,从而减少线程资源创建的目的。复用IO模型的优势并不是对于单个连接能处理得更快,而是在于能处理更多的连接。

socket是一种特殊的文件,它也有文件描述符,进程可以打开一个socket,并且像处理文件一样对它进行read()和write()操作,而不必关心数据是怎么在网络上传输的  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值