基本的通信架构

基本的通信架构:

  • CS架构(Client/Server)
  • BS架构(Browser/Server)

IP地址

InetAddress

InetAddress类的常用方法 说明
public static InetAddress getLocalHost() throws UnknownHostException 获取本机IP,返回一个InetAddress对象
public String getHostName() 获取该IP地址对象对应的主机名
public String getHostAddress() 获取该IP地址对象中的IP地址信息
public static InetAddress getByName(String host) throws UnknownHostException 根据IP地址或者域名,返回一个InetAddress对象
public boolean isReachable(int timeout) throws IOException 判断主机在指定毫秒内与该IP对应的主机是否能连通

端口

  • 周知端口:0~1023,被预先定义的知名应用占用(如:HTTP占用80,FTP占用21)
  • 注册端口:1024~49151,分配给用户进程或者某些应用程序
  • 动态端口:49152~65535,不固定分配某种进程而是动态分配

传输层通信协议

  • UDP:用户数据报协议

    无连接、不可靠,通信效率高,适合直播、视频通话

  • TCP:传输控制协议

    面向连接、可靠通信,三次握手建立连接,传输数据进行确认,四次挥手断开连接,适合文件下载、支付、网页

UDP通信

java.net.DatagramSocket类实现UDP通信。

TCP通信

客户端使用java.net.Socket类实现,服务端使用java.net.ServerSocket类实现。

引入多线程实现TCP多客户端通信

服务端:主线程负责接收客户端连接,接收到客户端创建子线程负责socket

B/S架构的原理