Java网络
Java具有相当易于使用的内置联网API,该API使通过Internet上的TCP / IP套接字或者UDP套接字进行通信变得容易。 TCP通常比UDP使用更多,但本教程将介绍这两种方法。
在theitroad.local上,还有另外三本与该Java网络教程相关的教程。这些是:
- Java IO教程
- Java NIO教程
- Java多线程服务器教程
尽管Java Networking API使我们能够通过套接字打开和关闭网络连接,但所有通信都是通过Java IO类InputStream和OutputStream进行的。
或者,我们可以使用Java NIO API中的联网类。这些类与Java Networking API中的类相似,除了Java NIO API可以在非阻塞模式下工作。在某些情况下,非阻塞模式可能会提高性能。
Java TCP网络基础
通常,客户端会打开与服务器的TCP / IP连接。然后,客户端开始与服务器通信。客户端完成后,它将再次关闭连接。这是一个说明:
客户
服务器打开连接发送请求接收响应关闭连接客户端可以通过打开连接发送多个请求。实际上,客户端可以发送与服务器准备接收一样多的数据。服务器也可以根据需要关闭连接。
Java Socket和ServerSocket
当客户端想要打开与服务器的TCP / IP连接时,它使用Java套接字来打开。套接字被告知要连接到哪个IP地址和TCP端口,其余的由Java完成。
如果要启动一个服务器来侦听某个TCP端口上来自客户端的传入连接,则必须使用Java ServerSocket。当客户端通过客户端套接字连接到服务器的ServerSocket时,服务器上的套接字将分配给该连接。客户端和服务器现在可以进行套接字到套接字的通信。
套接字和ServerSocket在后面的文章中有更详细的介绍。
Java UDP网络基础
UDP的工作原理与TCP略有不同。使用UDP,客户端和服务器之间没有连接。客户端可以将数据发送到服务器,服务器可以(也可以不)接收该数据。客户端永远不会知道是否在另一端接收到数据。从服务器以其他方式发送到客户端的数据也是如此。
因为不能保证数据传输,所以UDP协议的协议开销较小。
在许多情况下,无连接UDP模型优于TCP。这些在Java的UDPDatagramSocket
的文本中有更详细的介绍。