Java提供了非常易用的网络API,调用这些API我们可以很方便的通过建立TCP/IP或UDP套接字,在网络之间进行相互通信,其中TCP要比UDP更加常用,但在本教程中我们对这两种方式都有说明。
在网站上还有其他三个与Java网络相关的教程,如下:
3.Java服务器多线程教程 (参与翻译可以联系我们)
尽管Java网络API允许我们通过套接字(Socket)打开或关闭网络连接,但所有的网络通信均是基于Java IO类 InputStream和OutputStream实现的。
此外,我们还可以使用Java NIO API中相关的网络类,用法与Java网络API基本类似,Java NIO API可以以非阻塞模式工作,在某些特定的场景中使用非阻塞模式可以获得较大的性能提升。
Java TCP网络基础
通常情况下,客户端打开一个连接到服务器端的TCP/IP连接,然后客户端开始与服务器之间通信,当通信结束后客户端关闭连接,过程如下图所示:
客户端通过一个已打开的连接可以发送不止一个请求。事实上在服务器处于接收状态下,客户端可以发送尽可能多的数据,服务器也可以主动关闭连接。
Java中Socket类和ServerSocket类
当客户端想要打开一个连接到服务器的TCP/IP连接时,就要使用到Java Socket类。socket类只需要被告知连接的IP地址和TCP端口,其余的都有Java实现。
假如我们想要打开一个监听服务,来监听客户端连接某些指定TCP端口的连接,那就需要使用Java ServerSocket类。当客户端通过Socket连接服务器端的ServerSocket监听时,服务器端会指定这个连接的一个Socket,此时客户端与服务器端间的通信就变成Socket与Socket之间的通信。
关于Socket类和ServerSocket类会在后面的文章中有详细的介绍。
Java UDP网络基础
UDP的工作方式与TCP相比略有不同。使用UDP通信时,在客户端与服务器之间并没有建立连接的概念,客户端发送到服务器的数据,服务器可能(也可能并没有)收到这些数据,而且客户端也并不知道这些数据是否被服务器成功接收。当服务器向客户端发送数据时也是如此。
正因为是不可靠的数据传输,UDP相比与TCP来说少了很多的协议开销。
在某些场景中,使用无连接的UDP要优于TCP,这些在文章Java UDP DatagramSocket类介绍中会有更多介绍。
相关推荐
本教程“Java技术教程--基础篇”旨在为初学者提供一个全面的Java学习平台,帮助他们掌握Java编程的基础概念和技能。教程内容涵盖Java的核心特性,包括图形用户界面(GUI)、线程管理和网络通信。 首先,我们来深入...
这个"java基础教程----精华版"显然是一份精心整理的资料,旨在帮助初学者快速掌握Java编程的基础知识。下面将详细介绍Java语言的核心概念和关键知识点。 1. **Java语法基础**: - **变量**:在Java中,变量是存储...
【完整课程列表】 Java基础[01-Java概述].pdf Java基础[02-Java基础语法1].pdf Java基础[02-Java基础语法2].pdf Java基础[03-面向对象].pdf Java基础[04-继承上].pdf ...Java基础[09-网络编程].pdf
Java 学习教程 - 基础入门及提高 Java 作为一种强大的编程语言,提供了丰富的特性和优雅的设计,旨在解决大规模和复杂的编程问题。本教程旨在引导初学者逐步进入Java的世界,同时也适合有一定编程基础的开发者...
【Java教程--PPT】是一份详尽的Java学习资源,旨在帮助初学者以及有一定基础的开发者深化对Java编程语言的理解。这份教程可能包含了PPT形式的课件,由教育专家雷学生精心编排,旨在提供清晰、系统的学习路径。 在...
使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用...
Java NIO(New IO)是Java 1.4版本引入的一个新模块,是对传统IO模型的补充和扩展...通过本教程的学习,开发者不仅可以掌握NIO的基本概念,还能了解其在实际开发中的应用,为编写高效、灵活的Java程序打下坚实的基础。
6. **网络**:涵盖Java网络编程的基础知识,如Socket编程等。 随着课程的进展,将会逐步深入到Java平台的更高级特性。 #### 授课对象 本课程适合具有一定编程基础的学习者,特别是有志于通过SUN认证考试的专业人士...
最后,"JAVA程序员必读--基础篇"可能还会涵盖Java标准库中的常用类,如Math类、Date和Calendar类,以及用于网络编程的Socket和ServerSocket。 总之,这个教程将引导初学者逐步进入Java的世界,提供扎实的编程基础,...
Java网络编程是Java面向对象程序设计的一个重要领域,主要涉及如何利用Java API进行网络通信。在本章中,我们将深入探讨TCP/IP协议的基础知识以及Java中实现网络通信的关键工具类。 首先,TCP/IP协议是互联网通信的...
使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用...
本教程旨在为初学者提供一个全面的Java基础知识学习路径,帮助快速掌握编程技能。 1. **Java简介** Java是由Sun Microsystems公司(现已被Oracle收购)在1995年推出的,它的设计目标是“一次编写,到处运行”。...
使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用...
根据提供的文件信息,以下是关于Java基础教程的知识点梳理: 1. Java语言的起源与发展:Java语言是由Sun Microsystems公司于1995年发布的,由James Gosling领导的小组开发。Java语言的早期代号为“Oak”,后来被...
本"java视频教程-MLDN"是由知名讲师李兴华精心制作,旨在为学习者提供一套全面、深入的Java学习资源。李兴华老师以其丰富的教学经验和深厚的编程功底,确保教程内容的专业性和实用性。 在本套教程中,你将学习到:...
《CoreJava--基础教程》是一本专注于Java编程语言基础知识的权威指南。这本书涵盖了从Java语言的基本语法、数据类型到类和对象,再到异常处理、集合框架等核心概念,旨在为初学者提供一个全面且深入的学习路径。以下...
使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用...