java网络编程
java中实现网络编程用到的套接字是Socket,在引入Socket的时候先来了解一下网络通信协议。
网络通信协议:
计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
网络通信协议的分层:
OSI参考模型:
- 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
TCP/IP参考模型:
- 应用层(HTTP、FTP、SMTP、DNS)
- 传输层(TCP、UDP)
- 网络层(IP、ARP、ICMP)
- 链路层(各种网络接口)
TCP
- 含义:是一种面向连接的、可靠的、基于字节流的运输层通信协议。
- 特点:
- 1、面向连接
- 2、点到点通信
- 3、高可靠性
- 4、占用系统资源多、效率低
UDP
- 含义:一种无连接的传输协议,提供面向事物的简单不可靠信息传送服务。
- 特点:
- 1、非面向连接,传输不可靠,数据可能丢失。
- 2、发送数据时也不管对方是否准备好,接收方也得不到确认。
- 3、可以广播发送
- 4、非常简单的协议,开销小。
InetAddress类:
用于封装计算机IP地址,但没有端口。
//使用getLocalHost方法创建InetAddress对象
InetAddress addr = InetAddress.getLocalHost();
System.out.println(addr.getHostAddress()); //返回IP地址
System.out.println(addr.getHostName()); //输出计算机名
//根据域名得到InetAddress对象
addr = InetAddress.getByName(“www.163.com”);
System.out.println(addr.getHostAddress()); //返回 163服务器的ip:61.135.253.15
System.out.println(addr.getHostName()); //输出:www.163.com
//根据ip得到InetAddress对象
addr = InetAddress.getByName(“61.135.253.15”);
System.out.println(addr.getHostAddress()); //返回 163服务器的ip:61.135.253.15
System.out.println(addr.getHostName()); //输出ip而不是域名。如果这个IP地 址不存在或DNS服务器不允许进行IP地址和域名的映射,getHostName方法就直接返回这个IP地址。
InetSocketAddress类
用于socket通信ÿ