java的网络编程
本书内容共分为3部分。第1部分讲解Java程序设计的基础知识,包括Java的简单数据及程序流程控制、面向对象设计思想、类、对象、接口、异常处理以及标准类库等内容;第2部分讲解Java程序设计的一般知识,包括GUl编程、输入输出设计、数据库访问以及多线程编程等内容;第3部分讲解Java网络程序设计的高级知识,包括Java安全、JavaBean组件、套接字编程、Java网络编程(涉及Servlet/JSP技术)以及Java EE和Java ME等内容。在本书的第2版中,图形编程和Web编程(JavaEE流行框架)部分得到了补充和完善。
本书重点放在Java程序设计语言基础以及Java网络编程技术上,同时力求重点突出,覆盖面广。各章均提供了丰富的实例和练习,并将在网上提供相应内容的多媒体课件(PPT格式)。全书由浅入深、实例生动、易学易用,可以满足不同层次读者的需求。本书可作为普通高等院校应用型本科(含部分高职高专)相关专业的程序设计教材,也可作为软件开发人员的参考书。
B. 在javasocket网络编程中,开发基于udp协议的程序使用的套接字有哪些
Socket套接字,是由系统提供用于网络通信的技术(操作系统给应用程序提供的一组API叫做Socket API),是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程。
socket可以视为是应用层和传输层之间的通信桥梁;
传输层的核心协议有两种:TCP,UDP;socket API也有对应的两组,由于TCP和UDP协议差别很大,因此,这两组API差别也挺大。
分类:
Socket套接字主要针对传输层协议划分为如下三类:
流套接字:使用传输层TCP协议
TCP,即Transmission Control Protocol(传输控制协议),传输层协议;
TCP的特点:
有连接:像打电话,得先接通,才能交互数据;
可靠传输:传输过程中,发送方知道接收方有没有收到数据.(打电话就是可靠传输);
面向字节流:以字节为单位进行传输.(非常类似于文件操作中的字节流);
全双工:一条链路,双向通信;
有接收缓冲区,也有发送缓冲区。
大小不限
对于字节流来说,可以简单的理解为,传输数据是基于IO流,流式数据的特征就是在IO流没有关闭的情况下,是无边界的数据,可以多次发送,也可以分开多次接收。
数据报套接字:使用传输层UDP协议
UDP,即User Datagram Protocol(用户数据报协议),传输层耐侍圆协议。
UDP的特点:
无连接:像发微信,不需要接通,直接就能发数据;
不可靠传输:传输过程中,发送方不知道接收方有没有收到数据.(发微信就是不可靠传输);
面向数据报:以数据报为单位进行传输(一个数据报都会明确大小)一次发送/接收必须是一个完整的数据报,不能是半个,也不能是一个半;
全双工:一条链路,双向通信;
有接收缓冲区,无发送缓冲区;
大小受限:一次最多传输64k;
对于数据报来说,可以简单的理解为,传输数据是一块一块的,发送一块数据假如100个字节,必须一次发送,接收也必须一次接收100个字节,谈州而不能分100次,每次接收1个字节。
原始套接字
原始套接字用于自定义传输层协议,用于读写内核没有处理的IP协议数据。
二、UDP数据报套接字编程
UDPSocket中,主要涉及到两类:DatagramSocket、DatagramPacket;
DatagramSocket API
DatagramSocket 创建了一个UDP版本的Socket对象,用于发送和接收UDP数据报,代表着操作系统中的一个socket文件,(操作系统实现的功能–>)代表着网卡硬件设备的抽象体现。
DatagramSocket 构造方法:
方法签名 方法说明
DatagramSocket() 创建一个UDP数据报套接字的Socket,绑定到本机任意一个随机端口(一般用于客户端)
DatagramSocket(int port) 创建一个UDP数据报套接字的Socket,绑定到本机指定的端口(一般用于服务端)
DatagramSocket 方法:
方法签名 方法说明
void receive(DatagramPacket p) 从此套接字接收数据报(如果没有接收到数据报,该方法昌塌会阻塞等待)
void send(DatagramPacket p) 从此套接字发送数据报包(不会阻塞等待,直接发送)
void close() 关闭此数据报套接字
DatagramPacket API
代表了一个UDP数据报,是UDP Socket发送和接收的数据报,每次发送/接收数据报,都是在传输一个DatagramPacket对象。
DatagramPacket 构造方法:
方法签名 方法说明
DatagramPacket(byte[] buf, int length) 构造一个DatagramPacket以用来接收数据报,接收的数据保存在字节数组(第一个参数buf)中,接收指定长度(第二个参数length)
DatagramPacket(byte[] buf, int offset, int length,SocketAddress address) 构造一个DatagramPacket以用来发送数据报,发送的数据为字节数组(第一个参数buf)中,从0到指定长度(第二个参数length)。address指定目的主机的IP和端口号
DatagramPacket 方法:
方法签名 方法说明
InetAddress getAddress() 从接收的数据报中,获取发送端主机IP地址;或从发送的数据报中,获取接收端主机IP地址
int getPort() 从接收的数据报中,获取发送端主机的端口号;或从发送的数据报中,获取接收端主机端口号
byte[] getData() 获取数据报中的数据
构造UDP发送的数据报时,需要传入 SocketAddress ,该对象可以使用 InetSocketAddress 来创建。
InetSocketAddress API
InetSocketAddress ( SocketAddress 的子类 )构造方法:
方法签名 方法说明
InetSocketAddress(InetAddress addr, int port) 创建一个Socket地址,包含IP地址和端口号
示例1:写一个简单的客户端服务程序,回显服务(EchoSever)
在这里插入图片描述
构建Socket对象有很多失败的可能:
端口号已经被占用,同一个主机的两个程序不能有相同的端口号(这就好比两个人不能拥有相同的电话号码);
此处,多个进程不能绑定同一个端口号,但是一个进程可以绑定多个端口,(这就好比一个人可以拥有多个手机号),一个进程可以创建多个Socket对象,每个Socket都绑定自己的端口。
每个进程能够打开的文件个数是有上限的,如果进程之间已经打开了很多文件,就可能导致此时的Socket文件不能顺利打开;
在这里插入图片描述
这个长度不一定是1024,假设这里的UDP数据最长是1024,实际的数据可能不够1024.
在这里插入图片描述
这里的参数不再是一个空的字节数组了,response是刚才根据请求计算的得到的响应,是非空的,DatagramPacket 里面的数据就是String response的数据。
response.getBytes().length:这里拿到的是字节数组的长度(字节的个数),而response.length得到的是字符的长度。
五元组
一次通信是由5个核心信息描述的:源IP、 源端口、 目的IP、 目的端口、 协议类型。
站在客户端角度:
源IP:本机IP;
源端口:系统分配的端口;
目的IP:服务器的IP;
目的端口:服务器的端口;
协议类型:TCP;
站在服务器的角度:
源IP:服务器程序本机的IP;
源端口:服务器绑定的端口(此处手动指定了9090);
目的IP:包含在收到的数据报中(客户端的IP);
目的端口:包含在收到的数据报中(客户端的端口);
协议类型:UDP;
C. java的网络编程有哪些方面
Java网络编程的基础知识、 套接字编程、非阻塞通信、创建HTTP服务器与客户程序、数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBCAPI、JavaMail API、MVC设计模式、安全网络通信、CORBA和Web服务。
D. java网络编程 和 java web有什么区别
网络编程主要是网络通信,实现计算机之间的对话和文件传输。WEB编程主要就是网站开发。一个是c/s架构(应用软件,桌面应用程序又称之为客户端-服务器应用程序,Client/Server) 另一个是b/s架构(网站又称浏览器-服务器应该程序,Browser/Server)。 可想而知,您说哪个是主流和非主流呢? 最近做的一个WEB站点 睡美人乐淘网
E. 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知识,也可以点击本站的其他文章进行学习。