java网络编程

网络基础

TODO 学习计算机网络


网络编程API

InetAddress 类

InetAddress 类主要表示 IP 地址,两个子类:Inet4Address、Inet6Address

该类没有提供公共的构造器,采用静态方法获取实例:

  • public static InetAddress getLocalHost()
  • public static InetAddress getByName(String host)
  • public static InetAddress getByAddress(byte[] addr)

常用方法:

  • public String getHostAddress() :返回 IP 地址字符串(以文本表现形式)
  • public String getHostName() :获取此 IP 地址的主机名
  • public boolean isReachable(int timeout):测试是否可以达到该地址

代码

@Test
public void test() throws UnknownHostException {
  InetAddress localHost = InetAddress.getLocalHost();
  System.out.println(localHost);
  InetAddress blog = InetAddress.getByName("blog.luckjin.cool");
  System.out.println(blog);
}

Socket 类

网络上具有唯一标识的 IP 地址和端口号组合在一起构成唯一能识别的标识符套接字 (Socket)

特点

  • 通信的两端都要有 Socket,是两台机器间通信的端点
  • Socket 允许程序把网络连接当成一个流,数据在两个 Socket 间通过 IO 传输
  • 一般主动发起通信的应用程序属客户端,等待通信请求的为服务端

分类

  • 流套接字(stream socket):使用 TCP 提供可依赖的字节流服务
  • 数据报套接字(datagram socket):使用 UDP 提供 “尽力而为” 的数据报服务

TODO..