JAVA-网络编程

网络编程

网络基本概念

网络模型:
物理层、数据链路层、网络层、传输层(UDP、TCP)、应用层、会话层、表示层 --- http、ftp、pop3、SMATP(电邮)
网络协议:
服务商和浏览器厂商之间约定的解析方式。
IP地址:
实际上是在网络中用于标记主机。
取值范围是0 - 255,一共能表示2^32个取值。
域名:厂商提供的便于记忆的字符串
一级域名:用于表示的性质
二级域名:随便是啥/公司的名称/标记
三级域名:表示具体的应用
DNS服务器:将域名和IP地址进行映射。
端口:计算机和外界进行信息交互的媒介。端口号:0-65535,其中0-1024中的部分端口被计算机内部占用的。

SocketAddress
是一个抽象类,使用时创建InetSocketAddress子类对象。传入一个IP地址和端口。

UDP

特点:
1、实际上是一个基于网络进行数据传输的流。
2、不建立连接的
3、不可靠,可能会产生数据的丢失
4、对数据进行封包,每一个包不超过64KB
5、传输速度相对较快(没啥用)
6、适用于要求速度但对可靠性依赖较低的场景


发送端:
1、创建UDP对象
DatagramSocket ds = new DatagramSocket();
2、准备数据包,将数据以及地址放入到数据包中
DatagramPacket dp = new DatagramPacket("你好".getBytes(), "你好".getBytes().length, new InetSocketAddress("localhost", 8090)
3、发送数据包
ds.send(dp);
4、关流

接收端:
1、创建UDP对象,绑定监听的端口号
DatagramSocket ds = new DatagramSocket(port);
2、准备数据包。
DatagramPacket dp = new DatagramPacket(new byte[1024], 1024);
3、接受数据包
ds.receive(dp);
4、关流
5、解析数据
byte[] data = dp.getData();


先启动接收端再启动发送端
255.255.255.255:广播地址,只要在一个局域网内都会收到数据。


TCP
特点:
1、基于网络进行数据传输的流
2、需要建立连接,需要三次交汇。
请求建立连接
回应是否连接
确认建立连接
3、可靠,保证数据是不会丢失的
4、理论上不限制数据大小
5、传输速度较慢
6、适用于要求可靠性但是对速度依赖性相对较低的场景。文件上传/下载

客户端:
创建Socked 对象
Socket s = new Socket();
发起连接,绑定要连接的地址和端口号
s.connect(new InetSocketAddress("localhost", 8090));
获取输出流,并写入数据
OutputStream out = s.getOutputStream();
s.shutdownOutput();
关闭输出流
关闭Socked对象产生流

服务器端:
创建服务器ServerSocket对象
ServerSocket ss = new ServerSocket(8090);
接收连接,获取到要连接过来的Socket对象
Socket s = ss.accept();
获取输入流,读取数据,关闭输入流
InputStream in = s.getInputStream();
s.shutdownInput();
关流

原文地址:https://www.cnblogs.com/xiaoluohao/p/11461717.html