网络编程
IO & 网络 组合编程
网络模型:
OSI模型:
开放系统互联(Open System Interconnection)
网络七层:
// ① 物理层
// 定义网线、网卡等硬件设备的接口规范,通过传输比特流(数据:比特bit),
// 将数据1、0 数模转换 电流强弱 发送数据,将 电流强弱 模数转换 数据1、0
// 接收数据
// ② 数据连路层
// 通过交换机,在不同主机间,利用主机的MAC地址(网卡)将底层数据(帧)进行
// 封装与解封装
// ③ 网络层
// 通过路由器,在不同主机间,利用IP地址将底层数据(数据包)进行封装与解封装
// ④ 传输层
// 定义协议与端口,将下层数据(段)进行分段、传输、重组
// ⑤ 会话层
// 主机间建立起可以通信的通道
// ⑥ 表示层
// 对传输的数据进行解释(加密解密 | 加压解压),进行 机器语言 和
// 人文语言 之间的相互转换
// ⑦ 应用层
// 实体语言(FTP:数据下载 WEB:网页交互 应用:具体应用功能)
// TCP/IP模型:
// 传输控制协议(Transmission Control Protocol)
// 互联网协议(Internet Protocol)
// 网络四层
// ① 主机至网络层 - 物理层、数据链路层
// ② 网际层 - 网络层
// ③ 传输层 - 传输层
// ④ 应用层 - 会话层、表示层、应用层
<<_<<<<_<<<<___<<<<<<<<_<<<<<
信息接收方
// ① 创建接收方
// ② 生成存储报文的数据容器
// ③ 通过对于的数据包大小接收数据
// ④ 应用接收到达数据
// ⑤ 关闭服务
public class MessageReceive {
public static void main(String[] args) throws IOException{
System.out.println("接收方开始接收数据了...");
// ① 创建接收方Socket (注:一定要明确端口号)
DatagramSocket recevier = new DatagramSocket(10001);
// ② 生成存储报文的数据容器
byte[] buf = new byte[1024];
// ③ 通过对于的数据包大小接收数据
DatagramPacket packet = new DatagramPacket(buf, buf.length);
// 注:阻塞,等待接收发送方发来的数据
recevier.receive(packet);
// ④ 应用接收到达数据
System.out.println(new String(packet.getData()));
System.out.println(packet.getPort() );
// ⑤ 关闭服务
recevier.close();
}
}
域名
// http://www|news|spotrs.sina.com.cn
// 前缀:代表主机服务器(www以万维网指定的服务标准搭建的服务器)
// 主体:域名主体,可以自定义
// 后缀:公司性质(com商业模式企业 edu教育 net 服务 org组织 cn中国 hk香港)
// 域名解析
// hosts文件– IP 与 域名 对应关系
// DNS服务– 指向指定的DNS服务器(带有IP域名解析的服务器)
// 请求宽带供应商 – 进行DNS服务解析
public class Net02 {
public static void main(String[] args) throws UnknownHostException{
// 获取本地服务器地址
InetAddress ia = InetAddress.getLocalHost();
String ip = ia.getHostAddress();
System.out.println(ip);
String local = ia.getHostName();
System.out.println(local);
// 通过IP地址获取服务器地址信息
// 局域网:getHostName可以通过hosts文件配置,默认值同getHostAddress
InetAddress ad1 = InetAddress.getByName("10.80.16.199");
System.out.println(ad1.getHostName() + ":" + ad1.getHostAddress());
// 广域网
InetAddress[] ads = InetAddress.getAllByName("baidu.com");
for (InetAddress i : ads) {
System.out.println(i.getHostName() + ":" + i.getHostAddress());
}
}
}