目录
一.网络
1.网络
①.网络:两台或多台设备通过一定物理设备连接起来构成了网络。网络分为
局域网:覆盖范围最小,一个教室或机房
城域网:覆盖范围较大,一个城市
广域网:覆盖范围最大,一个国家甚至一个星球(万维网)
②.网络通信:两台设备之间通过网络实现数据传输,将数据从一台设备传输到另一个设备,(java.net包)
2.ip
①.ip地址:标识网络中的每一台计算机。127.0.0.1为本机地址
②.IP地址的表示形式为:点分十进制 x.x.x.x,每个数范围:0--255
③.ip地址的组成:网络地址 + 主机地址
④.ipv4分类
⑤.ipv6:是用于代替 ipv4 的下一代 ip 协议,由于 ipv4 最大的问题 在于网络地址资源有限,严重制约了互联网的应用和发展,ipv6 的出现 不仅能解决网络地址资源数量的问题,也能解决多种接入设备连入互联网的障碍
3.网络通信协议
①.TCP/IP协议(传输控制协议):由网络层的IP协议和传输层的TCP协议组成的
②.TCP 和 UDP
二.InetAddress
1.getLocalHost()获取本机 InetAddress 对象 |
2.getByName()根据指定主机名/域名获取 ip 地址对象 |
3.getHostName()获取 InetAddress 对象的主机名 |
4.getHostAddress ()获取 InetAddress 对象的地址 |
// 1.getLocalHost()获取本机 InetAddress 对象
InetAddress i = InetAddress.getLocalHost();
System.out.println(i);
// 2.getByName()根据指定主机名/域名获取 ip 地址对象
InetAddress.getByName("www.baidu.com");
// 3.getByName()获取 InetAddress 对象的主机名
System.out.println(i.getHostName());
// 4.getHostAddress ()获取 InetAddress 对象的地址
System.out.println(i.getHostAddress());
三.Socket
①.Socket (套接字)开发网络应用程序被广泛采用
②.通信的两端都要有 Socket ,是两台机器间的端点
③.网络通信其实是 Socket 间的通信
④.Socket 允许程序把网络连接当成一个流,数据在两个 Socket 间通过 IO 传输
⑤.一般主动发起通信的为 客户端,等待通信的为 服务端
1.TCP 网络通信
当客户端连接到服务端后,客户端是通过一个端口和服务端进行通讯的,这个端口是TCP/IP来分配的,是随机的
netstat 指令:①.netstat-an 可以查看当前主机网络情况(端口监听 和 网络连接)
②.netstat-an | more 可以分页显示
③.Listening表示某个端口在监听,如果有一个客户端连接到该端口,就会显示一条连接信息
//服务端
ServerSocket Ss = new ServerSocket(9999);
System.out.println("aaaaa");
Socket s = Ss.accept();//接收
InputStream in = s.getInputStream();
BufferedInputStream bis = new BufferedInputStream(in);
BufferedOutputStream bos = new BufferedOutputStream(new
FileOutputStream("E:\\qq2.jpg"));
int i;
byte[] b = new byte[1024];
while ((i = bis.read(b)) != -1) {
bos.write(b, 0, i);
}
//关闭流
Ss.close();
bos.close();
s.close();
//客户端
Socket s = new Socket(InetAddress.getLocalHost(), 9999);//连接服务端
System.out.println("bbbbb");
BufferedInputStream bis = new BufferedInputStream(new
FileInputStream("e:\\qq.png"));
OutputStream oo = s.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(oo);
int i;
byte[] b = new byte[1024];
while ((i = bis.read(b)) != -1) {
bos.write(b, 0, i);
}
bis.close();
bos.close();
s.close();
文件:
2.UDP 网络通信
①.DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议的网络程序
②.UDP 数据通过 DatagramSocket 发送和接收,不保证能够安全到达目的地,也不能确定什么时候可以到达
③.DatagramPacket 对象封装了 UDP 数据,包含了 发送端的 IP 地址 和端口号以及接收端的 IP 地址 和端口号
④.UDP 协议中给出了完整的数据信息,因此无需建立连接
DatagramSocket Ss = new DatagramSocket(9999);
byte[] b = new byte[1024];
DatagramPacket dp = new DatagramPacket(b, b.length);
Ss.receive(dp);
b = dp.getData();
String s = new String(b, 0, b.length);
System.out.println(s);
Ss.close();
DatagramSocket Ss = new DatagramSocket(9998);
byte[] b = "123".getBytes();
DatagramPacket dp = new DatagramPacket(b, b.length,
InetAddress.getLocalHost(),9999);
Ss.send(dp);
Ss.close();