——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
关于Java的网络编程,主要包括以下几个方面的内容:
网络基础
Internet的形成和发展
网络通信协议
网络通信结构TCP/IP
Java网络编程基础
URL类和URLConnection类
InetAddress类
套接字Socket的应用
数据报套接字的应用
关于网络基础知识
网络:
– 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模宏大、功能强大的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。
计算机的联网可以实现:
– 使用远程资源
– 共享信息、程序和数据
– 分布处理
计算机网络分类
按照网络规模和范围可以简单划分为:
– 局域网(LAN,Local AreaNetwork)
– 都市网(MAN,MetropolisArea Network)
– 广域网(WAN,Wide AreaNetwork)
按照网络拓扑结构可以分为:
– 星型网络、总线网络、环线网络、树型网络、星型环线网络等
按照传输介质划分:
– 双绞线、同轴电缆、光导纤维、视线介质等
网络的几种工作模式
专用服务器结构(Server-Based)
又称为“工作站/文件服务器”结构,由若干台微机工作站与一台或多台文件服务器通过通信线路连接起来组成工作站存取服务器文件,共享存储设备。
客户机/服务器模式(client/server)
其中一台或几台较大的计算机集中进行共享数据库的管理和存取,称为服务器,而将其它的应用处理工作分散到网络中其它微机上去做,构成分布式的处理系统。
对等式网络:(Peer-to-Peer)
– 在对等式网络结构中,没有专用服务器每一个工作站既可以起客户机作用也可以起服务器作用。
Internet基础
Internet的形成和发展:
第一阶段(1969~1983):1969年,美国ARPANET诞生,用于将几个军事及研究用的主机联系起来。1983年,TCP/IP应用到ARPANET中,使得internet得以迅速发展。以ARPANET 为中心,组成新的互联网(internet),称为Internet。
第二阶段(1983~1994):用于教育和科研领域的NSFNET(NationalScience Foundation Net)形成
第三阶段(1994~Now):Internet的商业化运作。
网络通信协议/接口
网络通信协议
计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
网络通信结构
为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间 能进行信息交换。接口包括两部分:
硬件装置:实现结点之间的信息传送
软件装置:规定双方进行通信的约定协议
OSI的分层思想
OSI:开放系统互连(Open System Interconnection),采用分层的结构化技术。
分层的理由:
– 将网络简化
– 模块化的设计网络
OSI参考模型(OSI/RM,Open SystemInterconnection/Reference Model)共分为7层,最高层为用户层,最底层为物理层。
OSI的七层模型
TCP协议
TCP协议为一种可靠的端对端协议:重发一切没有收到的数据,进行数据内容准确性检查并保证分组的正确顺序。
TCP协议位于OSI参考模型的传输层
IP协议
IP协议是网络上的计算机进行连接的基础
IP协议是不可靠的:无论传送正确与否都不进行检验、不回送确认、不保证分组的正确顺序
IP协议位于OSI参考模型的网络层
TCP/IP协议
TCP/IP:是Internet上不同系统之间互联的一组协议。它为分散和不同类型的硬件提供了一个通用的编程接口。TCP/IP 协议使Internet尽可能成为一个分散、无序的网络。
TCP/IP通常被看成一个4层模型:应用层、传输层、网络层以及数据链路层+物理层。
OSI和TCP/IP的分层对应
数据的封装和拆封
位于TCP/IP各个层的数据通常用一个公共的机制来封装:定义描述元信息和数据报的部分真实信息的报头的协议,这些元信息可以是数据源、目的地和其他的附加属性。来自于高层的协议封装在较低层的数据报中,当信息在不同的层之间传递时,都会在每一层重新构建一次。
IP地址的分配
IP地址的定义
为了实现Internet上不同计算机之间的通信,每台计算机都必须有一个不与其它计算机重复的地址—IP地址
IP地址是数字型的,32位(32bit),由4个 8位的二进制数组成,每8位之间用圆点隔开
网络标识(network id)和主机标识 (host id)
IP地址被分成了A、B、C、D、E五类,每个类别的网络标识和主机标识各有规则。
常见 TCP 端口和对应服务
通过java.net中的InetAddress类,可以得到指定主机的IP地址
– 如果没有指定机器,则将会返回本地主机的IP地址
端口(port)
计算机与外界交流的出入口
是一种抽象的软件结构,包括一些数据结构和I/O(基本输入/输出)缓冲区
端口号可以从0到65535,通常将它分为三类:
公认端口(Well Known Ports):从0到1023,它们紧密绑定(Binding)一些服务
注册端口(Registered Ports):从1024到49151。它们松散地绑定一些服务
动态和/或私有端口(Dynamicand/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口
Socket
套接字(Socket ):表示一个系统的IP地址和端口号的结合。
– TCP/IP连接的一个端点
– 用来处理两个流对象
创建TCP Socket需要的四个信息:
– 本地系统的IP
– 本地应用程序使用的TCP端口号
– 远程系统的IP
– 远程应用程序相应的TCP端口号
Java Socket编程
java.net.ServerSocket/java.net.Socket两个类用于建立一个双边的通信。ServerSocket等待来自客户端的连接,而Socket 连接到一个服务器端。
ServerSocket类
ServerSocket类用于侦听一个客户端的Socket连接,如果没有连接,它将一直等待。
ServerSocket构造器:
– ServerSocket(int port):用指定的端口port来创建一个侦听Socket
– ServerSocket(int port,intbacklog):加上一个用来改变连接队列长度的参数backlog。
– ServerSocket(int port,intbacklog,InetAddress localAddr):在机器存在多个 IP地址的情况下,允许通过localAddr这个参数来指定侦听的IP地址。
ServerSocket方法:
– Socket accept()
– close()
Socket类
Socket类构造器
– Socket()
– Socket(InetAddress address, int port)
– Socket(InetAddress address, intport, InetAddress localAddr, int localPort)
– Socket(String host, int port)
– protected Socket(SocketImpl impl)
– Socket(String host, int port,InetAddress localAddr, int localPort)
Socket方法:
– getInputStream()
– getOutputStream()
– close()
Socket通信模型
Socket通信例子
ServerSocket server = newServerSocket(1234);
Socket sk = server.accept();
BufferedReader br = newBufferedReader(new InputStreamReader(sk.getInputStream()));
System.out.println(br.readLine());
br.close();
server.close();
Socket通信例子
Socket client;
PrintStream ps;
try
{
client = newSocket("localhost",1234);
System.out.println("连接成功");
ps = newPrintStream(client.getOutputStream());
ps.println("Hello");
client.close();
}
catch(IOException e)
{
System.out.println(e);
}