本书内容共分为3部分。第1部分讲解Java程序设计的基础知识,包括Java的简单数据及程序流程控制、面向对象设计思想、类、对象、接口、异常处理以及标准类库等内容;第2部分讲解Java程序设计的一般知识,包括GUl编程、输入输出设计、数据库访问以及多线程编程等内容;第3部分讲解Java网络程序设计的高级知识,包括Java安全、JavaBean组件、套接字编程、Java网络编程(涉及Servlet/JSP技术)以及Java EE和Java ME等内容。在本书的第2版中,图形编程和Web编程(JavaEE流行框架)部分得到了补充和完善。
本书重点放在Java程序设计语言基础以及Java网络编程技术上,同时力求重点突出,覆盖面广。各章均提供了丰富的实例和练习,并将在网上提供相应内容的多媒体课件(PPT格式)。全书由浅入深、实例生动、易学易用,可以满足不同层次读者的需求。本书可作为普通高等院校应用型本科(含部分高职高专)相关专业的程序设计教材,也可作为软件开发人员的参考书。
⑵ Java网络编程基本概念是什么
1、Java网络编程基本概念——主机的网络层
主机网络层定义特定网络接口(如以太网或WiFi天线)如何通过物理连接将IP数据报发送到本地网络或世界其他地方。在主机网络层中,连接不同计算机的硬件部分(电缆、光纤、无线电波或烟雾信号)有时被称为网络的物理层。Java程序员不需要担心这一层,除非出现错误,例如计算机后面的插头脱落或有人切断了您与外部世界之间的T-1线。换句话说,Java将永远看不到物理层。
2、Java网络编程基本概念——网络层
Internet层的下一层是主机网络层,这是Java程序员需要考虑的第一层。因特网层协议定义了数据位和字节如何组织成更大的组,称为包,也定义了不同计算机互相查找的寻址机制。Internet Protocol (IP)是世界上使用最广泛的Internet层协议,也是Java唯一了解的Internet层协议。
因特网协议基本上是两种协议:IPV4使用32位地址,IPV6使用128位地址,并增加了技术特性来帮助路由。这是两种完全不同的网络协议,如果没有特殊的网关/隧道协议,它们甚至不能在同一网络上互操作,但是Java向您隐藏了几乎所有这些差异。
除了路由和寻址之外,因特网层的第二个作用是使不同类型的主机网络层能够彼此对话。因特网路由器在WiFi和以太网、以太网和DSL、DSL和光纤往返协议之间进行交换。没有因特网层或类似的分层,每台计算机只能与同一类型网络上的其他计算机通信。因特网层负责使用适当的协议将异类网络彼此连接起来。
3、Java网络编程基本概念——传输层
原始数据报有一些缺点。最明显的缺点是无法保证可靠的传输,即使可以保证,也可能在传输过程中被损坏。头检查只能检测头中的损坏,而不能检测数据报的数据部分。最后,即使数据报没有损坏地到达了它的目的地,它也可能不能按照发送的顺序到达。
传输层负责确保按发送的顺序接收数据包,确保没有数据丢失或销毁。如果数据包丢失,传输层要求发送方重新传输该数据包。为此,IP网络向每个数据报添加了一个额外的头,其中包含更多信息。
这个级别有两个主要协议。第一个是传输控制协议(TCP),这是一个昂贵的协议,允许丢失或损坏的数据按照发送顺序重新传输。第二个协议是用户数据报协议(User Datagram Protocol, UDP),它允许接收方检测损坏的数据包,而不保证它们按照正确的顺序发送(或者根本不发送)。然而,UDP通常比TCP快。TCP被称为可靠协议。UDP是不可靠的。
4、Java网络编程基本概念——应用程序层
向用户交付数据的层称为应用层。以下三个层定义如何将数据从一台计算机传输到另一台计算机。应用层决定数据传输后的操作。有HTTP为用户Web, SMTP, POP, IMAP为用户电子邮件;FSP, TFTP用于文件传输,NFS用于文件访问;文件共享使用Gnutella和BitTorrent;会话发起协议(SIP)和Skype用于语音通信。此外,您的程序可以在必要时定义自己的应用程序级协议。(页面)
5、Java网络编程基本概念——IP、TCP、UDP
IP被设计成允许任意两点之间有多条路由,绕过损坏的路由器来路由数据包。由于两点之间有多条路由,而且由于网络流量或其他因素,它们之间的最短路径可能会随着时间而变化,因此构成特定数据流的数据包可能不会走同一条路由。即使它们全部到达,也可能不是按照它们被发送的顺序到达的。为了改进这一基本机制,TCP被放置在IP上,以便连接的两端可以确认收到的IP数据包,并请求重传丢失或损坏的数据包。此外,TCP允许接收端上的数据包按照发送的顺序重新分组。
然而,TCP有很多开销。因此,如果单个数据包的丢失不会完全破坏数据,那么可以使用UDP发送数据包,而不需要TCP提供的保证。UDP是一种不可靠的协议。它不能保证信息包将到达它们的目的地,或者它们将以它们被发送的相同顺序到达。
6、Java网络编程基本概念——IP地址和域名
IPv4网络上的每台计算机都有一个4字节的数字ID。通常在一个点上以四段格式写,比如192.1.32.90,每个数字是一个无符号字节,范围从0到255。IPv4网络上的每台计算机都有一个唯一的四段地址。当数据通过网络传输时,包的报头包括要发送到的机器的地址(目的地址)和要发送到的机器的地址(源地址)。路由上的路由器通过检查目的地址来选择发送包的最佳路径。包含源地址是为了让收件人知道该对谁进行回复。
虽然计算机可以很容易地处理数字,但人类并不擅长记住它们。因此,域名系统(DNS)被开发出来,用来将容易记住的主机名(如www.12345.com)转换成数字互联网地址(如208.201.243.99)。当Java程序访问网络时,它们需要同时处理数字地址和相应的主机名。这些方法由java.net.InetAddress类提供。
7、Java网络编程基本概念——港口
如果每台计算机一次只做一件事,地址就足够了。但是现代计算机同时做许多不同的事情。电子邮件需要与FTP请求分开,而FTP请求也需要与Web通信分开。这是通过端口完成的。具有IP地址的每台计算机有数千个逻辑端口(确切地说,每个传输层协议有65,535个端口)。这些只是计算机内存中的抽象,不代表任何物理对象,不像USB端口。每个端口在1到65535之间进行数字标识。每个端口可以分配给一个特定的服务。
8、Java网络编程基本概念——一个防火墙
在互联网上有一些顽皮的人。要排除它们,通常需要在本地网络上设置一个接入点,并检查进出该接入点的所有流量。位于因特网和本地网络之间的一些硬件和软件会检查所有输入和输出的数据,以确保它是防火墙。防火墙通常是路由器的一部分,它将本地网络连接到更大的因特网,并可以执行其他任务,如网络地址转换。另外,防火墙可以是单独的机器。防火墙仍然主要负责检查进出其网络接口的数据包,根据一组规则接收或拒绝数据包。
本篇《什么是Java网络编程基本概念?看完这篇文章你一定可以明白》到这里就已经结束了,小编一直认为,某一个编程软件受欢迎是有一定原因的,首先吸引人的一定是其功能,环球网校的小编祝您java学习之路顺利,如果你还想知道更多java知识,也可以点击本站的其他文章进行学习。
⑶ java网络编程( Socket编程的基本应用 )
Java网络编程中Socket编程的基本应用主要包括以下几点:
TCP Socket编程:
UDP Socket编程:
多播数据报套接字编程:
通过以上基本应用,Java网络编程者能够实现TCP和UDP以及多播环境下的数据传输,从而满足各种网络通信需求。
⑷ java网络技术编程
一、 客户端网络编程步骤
客户端(Client)是指网络编程中首先发起连接的程序,客户端一般实现程序界面和基本逻辑实现,在进行实际的客户端编程时,无论客户端复杂还是简单,以及客户端实现的方式,客户端的编程主要由三个步骤实现:
1、 建立网络连接
客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。
2、 交换数据
连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。
根据逻辑需要,可以多次交换数据,但是还是必须遵循请求响应模型。
3、 关闭网络连接
在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。
最基本的步骤一般都是这三个步骤,在实际实现时,步骤2会出现重复,在进行代码组织时,由于网络编程是比较耗时的操作,所以一般开启专门的现场进行网络通讯。
二、服务器端网络编程步骤
服务器端(Server)是指在网络编程中被动等待连接的程序,服务器端一般实现程序的核心逻辑以及数据存储等核心功能。服务器端的编程步骤和客户端不同,是由四个步骤实现,依次是:
1、 监听端口
服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。
这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。
2、 获得连接
当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。
一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。
3、 交换数据
服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。
其实,服务器端获得的连接和客户端连接是一样的,只是数据交换的步骤不同。
当然,服务器端的数据交换也是可以多次进行的。
在数据交换完成以后,关闭和客户端的连接。
4、 关闭连接
当服务器程序关闭时,需要关闭服务器端,通过关闭服务器端使得服务器监听的端口以及占用的内存可以释放出来,实现了连接的关闭。
其实服务器端编程的模型和呼叫中心的实现是类似的,例如移动的客服电话10086就是典型的呼叫中心,当一个用户拨打10086时,转接给一个专门的客服人员,由该客服实现和该用户的问题解决,当另外一个用户拨打10086时,则转接给另一个客服,实现问题解决,依次类推。
在服务器端编程时,10086这个电话号码就类似于服务器端的端口号码,每个用户就相当于一个客户端程序,每个客服人员就相当于服务器端启动的专门和客户端连接的线程,每个线程都是独立进行交互的。
这就是服务器端编程的模型,只是TCP方式是需要建立连接的,对于服务器端的压力比较大,而UDP是不需要建立连接的,对于服务器端的压力比较小罢了。
⑸ Java网络编程精解作者简介
孙卫琴,一位杰出的IT女性作家,于1997年毕业于上海交通大学。她的专业背景深厚,拥有丰富的Java软件开发经验,曾涉足J2EE培训和咨询领域。自2002年出版她的首部作品以来,孙卫琴一直以其女性特有的视角和细腻的笔触,专注于开源技术图书的创作,为读者们带来了独到的见解。
2004年,是孙卫琴的创作高峰期,这一年对于Java开源技术图书市场来说也是亮点频出。她所着的《精通Struts:基于MVC的JavaWeb设计与开发》和《Tomcat与JavaWeb开发技术详解》两部作品,以专业的内容和深度,赢得了市场的热烈反响。这两本书在2004年上市后,反响热烈,多次印刷,至2007年9月,已超过10次印刷,显示出极高的市场认可度和需求量。
值得一提的是,这两本专业性强的图书不仅收获了广大读者的好评,还在竞争激烈的IT图书市场中取得了空前的成功,这在当时实属罕见,充分证明了孙卫琴在Java网络编程领域的深厚造诣和独特贡献。
《Java网络编程精解》结合大量的典型实例,详细介绍了用Java来编写网络应用程序的技术。《Java网络编程精解》的范例都基于最新的JDK1.5版本,书中内容包括:Java网络编程的基础知识、套接字编程、非阻塞通信、创建HTTP服务器与客户程序、数据报通信、对象的序列化与反序列化、.Java反射机制、RMI框架、JDBCAPI、JavaMailAPI、MVC设计模式、安全网络通信、CORBA和Web服务。另外,《Java网络编程精解》还涵盖了Sun公司的SCJD(sunCertiffedJavaDeveloper)认证的考试要点。
⑹ Java网络编程精解的目录
第1章 Java网络编程入门 1
1.1 进程之间的通信 1
1.2 计算机网络的概念 3
1.3 OSI参考模型 5
1.4 TCP/IP参考模型和TCP/IP协议 8
1.4.1 IP协议 11
1.4.2 TCP协议及端口 14
1.4.3 RFC简介 15
1.4.4 客户/服务器通信模式 16
1.5 用Java编写客户/服务器程序 17
1.5.1 创建EchoServer 18
1.5.2 创建EchoClient 20
1.6 小结 22
1.7 练习题 23
第2章 Socket用法详解 25
2.1 构造Socket 25
2.1.1 设定等待建立连接的超时时间 26
2.1.2 设定服务器的地址 26
2.1.3 设定客户端的地址 27
2.1.4 客户连接服务器时可能抛出的异常 27
2.2 获取Socket的信息 30
2.3 关闭Socket 32
2.4 半关闭Socket 33
2.5 设置Socket的选项 38
2.5.1 TCP_NODELAY选项 38
2.5.2 SO_RESUSEADDR选项 38
2.5.3 SO_TIMEOUT选项 39
2.5.4 SO_LINGER选项 42
2.5.5 SO_RCVBUF选项 44
2.5.6 SO_SNDBUF选项 45
2.5.7 SO_KEEPALIVE选项 45
2.5.8 OOBINLINE选项 45
2.5.9 服务类型选项 45
2.5.10 设定连接时间、延迟和带宽的相对重要性 46
2.6 发送邮件的SMTP客户程序 47
2.7 小结 51
2.8 练习题 52
第3章 ServerSocket用法详解 55
3.1 构造ServerSocket 55
3.1.1 绑定端口 55
3.1.2 设定客户连接请求队列的长度 56
3.1.3 设定绑定的IP地址 58
3.1.4 默认构造方法的作用 58
3.2 接收和关闭与客户的连接 59
3.3 关闭ServerSocket 60
3.4 获取ServerSocket的信息 60
3.5 ServerSocket选项 62
3.5.1 SO_TIMEOUT选项 62
3.5.2 SO_REUSEADDR选项 63
3.5.3 SO_RCVBUF选项 64
3.5.4 设定连接时间、延迟和带宽的相对重要性 64
3.6 创建多线程的服务器 65
3.6.1 为每个客户分配一个线程 65
3.6.2 创建线程池 67
3.6.3 使用JDK类库提供的线程池 72
3.6.4 使用线程池的注意事项 74
3.7 关闭服务器 76
3.8 小结 80
3.9 练习题 81
第4章 非阻塞通信 83
4.1 线程阻塞的概念 83
4.1.1 线程阻塞的原因 83
4.1.2 服务器程序用多线程处理阻塞通信的局限 84
4.1.3 非阻塞通信的基本思想 85
4.2 java.nio包中的主要类 87
4.2.1 缓冲区Buffer 88
4.2.2 字符编码Charset 90
4.2.3 通道Channel 90
4.2.4 SelectableChannel类 92
4.2.5 ServerSocketChannel类 93
4.2.6 SocketChannel类 93
4.2.7 Selector类 96
4.2.8 SelectionKey类 97
4.3 服务器编程范例 100
4.3.1 创建阻塞的EchoServer 100
4.3.2 创建非阻塞的EchoServer 103
4.3.3 在EchoServer中混合用阻塞模式与非阻塞模式 110
4.4 客户端编程范例 114
4.4.1 创建阻塞的EchoClient 114
4.4.2 创建非阻塞的EchoClient 116
4.4.3 创建非阻塞的PingClient 120
4.5 小结 126
4.6 练习题 127
第5章 创建非阻塞的HTTP服务器 129
5.1 HTTP协议简介 129
5.1.1 HTTP请求格式 129
5.1.2 HTTP响应格式 132
5.1.3 测试HTTP请求 133
5.2 创建非阻塞的HTTP服务器 137
5.2.1 服务器主程序:
HttpServer类 137
5.2.2 具有自动增长的缓冲区的ChannelIO类 138
5.2.3 负责处理各种事件的
Handler接口 140
5.2.4 负责处理接收连接就绪
事件的AcceptHandler类 140
5.2.5 负责接收HTTP请求和发送HTTP响应的RequestHandler类 141
5.2.6 代表HTTP请求的Request类 143
5.2.7 代表HTTP响应的Response类 145
5.2.8 代表响应正文的Content接口及其实现类 147
5.2.9 运行HTTP服务器 149
5.3 小结 150
5.4 练习题 151
第6章 客户端协议处理框架 153
6.1 客户端协议处理框架的主要类 153
6.2 在客户程序中运用协议处理框架 154
6.2.1 URL类的用法 154
6.2.2 URLConnection类的用法 156
6.3 实现协议处理框架 160
6.3.1 创建EchoURLConnection类 161
6.3.2 创建EchoURLStreamHandler及工厂类 162
6.3.3 创建EchoContentHandler类及工厂类 163
6.3.4 在EchoClient类中运用ECHO协议处理框架 165
6.4 小结 166
6.5 练习题 167
第7章 用Swing组件展示HTML文档 169
7.1 在按钮等组件上展示HTML文档 170
7.2 用JEditorPane组件创建简单的浏览器 171
7.3 小结 179
7.4 练习题 179
第8章 基于UDP的
数据报和套接字 181
8.1 UDP协议简介 181
8.2 DatagramPacket类 184
8.2.1 选择数据报的大小 185
8.2.2 读取和设置DatagramPacket的属性 185
8.2.3 数据格式的转换 186
8.2.4 重用DatagramPacket 187
8.3 DatagramSocket类 189
8.3.1 构造DatagramSocket 189
8.3.2 接收和发送数据报 190
8.3.3 管理连接 190
8.3.4 关闭DatagramSocket 191
8.3.5 DatagramSocket的选项 191
8.3.6 IP服务类型选项 193
8.4 DatagramChannel类 193
8.4.1 创建DatagramChannel 194
8.4.2 管理连接 194
8.4.3 用send()方法发送数据报 194
8.4.4 用receive()方法接收数据报 195
8.4.5 用write()方法发送数据报 198
8.4.6 用read()方法接收数据报 199
8.5 组播Socket 202
8.5.1 MulticastSocket类 205
8.5.2 组播Socket的范例 207
8.6 小结 209
8.7 练习题 210
第9章 对象的序列化与反序列化 213
9.1 JDK类库中的序列化API 213
9.2 实现Serializable接口 218
9.2.1 序列化对象图 220
9.2.2 控制序列化的行为 222
9.2.3 readResolve()方法在单例类中的运用 229
9.3 实现Externalizable接口 231
9.4 可序列化类的不同版本的序列化兼容性 233
9.5 小结 235
9.6 练习题 236
第10章 Java语言的反射机制 239
10.1 Java Reflection API简介 239
10.2 在远程方法调用中运用反射机制 244
10.3 代理模式 248
10.3.1 静态代理类 248
10.3.2 动态代理类 250
10.3.3 在远程方法调用中
运用代理类 253
10.4 小结 258
10.5 练习题 259
第11章 RMI框架 261
11.1 RMI的基本原理 262
11.2 创建第一个RMI应用 264
11.2.1 创建远程接口 264
11.2.2 创建远程类 265
11.2.3 创建服务器程序 267
11.2.4 创建客户程序 269
11.2.5 运行RMI应用 270
11.3 远程对象工厂设计模式 272
11.4 远程方法中的参数与返回值传递 277
11.5 回调客户端的远程对象 281
11.6 远程对象的并发访问 286
11.7 分布式垃圾收集 289
11.8 远程对象的equals()、hashCode()和clone()方法 294
11.9 使用安全管理器 294
11.10 RMI应用的部署及类的动态加载 295
11.11 远程激活 297
11.12 小结 303
11.13 练习题 304
第12章 通过JDBC API访问数据库 305
12.1 JDBC的实现原理 306
12.2 安装和配置MySQL数据库 308
12.3 JDBC API简介 310
12.4 JDBC API的基本用法 314
12.4.1 处理字符编码的转换 317
12.4.2 把连接数据库的各种属性放在配置文件中 318
12.4.3 管理Connection、Statement和ResultSet对象的生命周期 321
12.4.4 执行SQL脚本文件 326
12.4.5 处理SQLException 328
12.4.6 输出JDBC日志 329
12.4.7 获得新插入记录的主键值 329
12.4.8 设置批量抓取属性 330
12.4.9 检测驱动器使用的JDBC版本 330
12.4.10 元数据 331
12.5 可滚动及可更新的结果集 333
12.6 行集 339
12.7 调用存储过程 346
12.8 处理Blob和Clob类型数据 347
12.9 控制事务 351
12.9.1 事务的概念 351
12.9.2 声明事务边界的概念 353
12.9.3 在mysql.exe程序中声明事务 354
12.9.4 通过JDBC API声明事务边界 356
12.9.5 保存点 357
12.9.6 批量更新 358
12.9.7 设置事务隔离级别 360
12.10 数据库连接池 362
12.10.1 创建连接池 363
12.10.2 DataSource数据源 369
12.11 小结 371
12.12 练习题 372
第13章 基于MVC和RMI的分布式应用 375
13.1 MVC设计模式简介 375
13.2 store应用简介 377
13.3 创建视图 381
13.4 创建控制器 389
13.5 创建模型 390
13.6 创建独立应用 394
13.7 创建分布式应用 395
13.8 小结 398
13.9 练习题 398
第14章 通过JavaMail API收发邮件 401
14.1 E-mail协议简介 401
14.1.1 SMTP简单邮件传输协议 401
14.1.2 POP3邮局协议 402
14.1.3 接收邮件的新协议IMAP 402
14.1.4 MIME简介 403
14.2 JavaMail API简介 403
14.3 建立JavaMail应用程序的开发环境 405
14.3.1 获得JavaMail API的类库 405
14.3.2 安装和配置邮件服务器 406
14.4 创建JavaMail应用程序 408
14.5 身份验证 412
14.6 URLName类 416
14.7 创建和读取复杂电子邮件 418
14.7.1 邮件地址 419
14.7.2 邮件头部 420
14.7.3 邮件标记 421
14.7.4 邮件正文 422
14.8 操纵邮件夹 427
14.9 小结 432
14.10 练习题 433
第15章 安全网络通信 435
15.1 SSL简介 435
15.1.1 加密通信 436
15.1.2 安全证书 436
15.1.3 SSL握手 437
15.1.4 创建自我签名的安全证书 438
15.2 JSSE简介 439
15.2.1 KeyStore、KeyManager与TrustManager类 442
15.2.2 SSLContext类 443
15.2.3 SSLServerSocketFactory类 444
15.2.4 SSLSocketFactory类 444
15.2.5 SSLSocket类 444
15.2.6 SSLServerSocket类 447
15.2.7 SSLEngine类 448
15.3 创建基于SSL的安全服务器和安全客户 453
15.4 小结 457
15.5 练习题 457
第16章 CORBA简介 459
16.1 创建IDL接口 460
16.2 创建IDL接口的实现类 460
16.3 创建服务器程序 461
16.4 创建客户程序 462
16.5 运行CORBA程序 463
16.6 小结 464
16.7 练习题 465
第17章 Web服务简介 467
17.1 SOAP简介 467
17.2 建立Apache AXIS环境 469
17.3 在Tomcat上发布
Apache-AXIS Web应用 470
17.4 创建SOAP服务 471
17.4.1 创建提供SOAP
服务的Java类 471
17.4.2 创建SOAP服务的
发布描述符文件 471
17.5 管理SOAP服务 472
17.5.1 发布SOAP服务 472
17.5.2 删除SOAP服务 473
17.6 创建和运行SOAP
客户程序 473
17.7 发布JWS服务 476
17.8 小结 476
17.9 练习题 477
附录A 本书范例的运行方法 479
A.1 本书所用软件的下载地址 479
A.2 部分软件的安装 479
A.2.1 安装JDK 480
A.2.2 安装ANT 480
A.2.3 安装Tomcat 481
A.3 编译源程序 481
A.4 运行客户/服务器程序 482