文章目录
1 本章简介
网络编程的基础知识 (掌握)
- 网络基础
- IP地址和端口号
Java的基本网络支持 (掌握)
- 使用InetAddress
- 使用URL
2 java网络编程
1简介
传统的网络编程是一项非常细节化的工作,程序员必须处理和网络有关的大量细节,如各种协议,甚至要理解网络相关的硬件知识。而Java则将底层的网络通信细节予以屏蔽,使得使用的编程模型是一个文件模型,也就是说,可以象操作流一样来操作网络数据传输。另外,由于在网络连接中,通常都需要一个服务器同时为多个客户端服务,因此Java的多线程机制也大派用场。
*****事实上网络编程简单的理解就是两台计算机相互通讯数据而已。
简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位 置.并去建立两者之间的联系.
***网络编程的目的: ***
:直接或间接地通过网络协议与其它计算机进行通信。
计算机的联网可以实现:
使用远程资源
共享信息、程序和数据
分布处理

实现网络编程:必须要知道网络通讯的要素:
- IP 地 址
- 端 口 号
- 传输协议
2 IP地址的概念和地址
概念:IP地址是数字型的,由32位(bit)二进制表示,将它分割成由4段(segment),每段由8位的二进制数组成,每段(8位)之间用圆点(.)隔开。用点分开的各段可以表示的数值范围是0~255。
定义:
- 为了实现Internet上不同计算机之间的通信,
- 每台计算机都必须有一个不与其它计算机重复的地址
- —IP地址因特网上的IP地址具有全球唯一性;IP地址是数字型的,32位(32bit),由4个8位的二进制数组成,常用点分十进制的格式表示,例如:192.168.0.16网络标识(network id)和主机标识 (host id)
3IP地址的分类
A类:1.0.0.0 到126.0.0.0【0.0.0.0 和127.0.0.0保留 】
B类:128.1.0.0到191.254.0.0【128.0.0.0和191.255.0.0保留 】
C类:192.0.1.0 到223.255.254.0【192.0.0.0和223.255.255.0保留】
D类:224.0.0.0到239.255.255.255用于多点广播
E类:240.0.0.0到255.255.255.254
========================================================
IP地址为192.168.0.210则它的主机标识:0.0.0.210
网络标识192.168.0.0
4 常用默认端口

FTP的端口是 21
TELNET 端口 23
MAIL 的端口号是 25\110
pop3\smtp 的端口号是 110/25
DNS 的端口号是 53
HTTP通信用的端口号是 80
mysql默认端口是 3306
SQL Server服务使用两个端口: TCP-1433、UDP-1434。
ORACLE默认端口 1521、1526
tomcat默认端口是 8080
5 网络通信协议,结构
网络通信协议:
计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
网络通信结构:
为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间 能进行信息交换。接口包括两部分:
硬件装置:实现结点之间的信息传送
软件装置:规定双方进行通信的约定协议
6 TCP定义
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来.我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。 打电话:
2 InetAddress和URL
1 InetAddress
1 定义
此类表示互联网协议 (IP) 地址。
InetAddress的实例对象包含以数字形式保存的IP地址,同时还可能包含主机名(如果使用主机名来获取InetAddress的实例,或者使用数字来构造,并且启用了反向主机名解析的功能)。InetAddress类提供了将主机名解析为IP地址(或反之)的方法。
2 方法
static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。
static InetAddress[] getAllByName(String host) 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。
static InetAddress getLocalHost() 返回的是本地地址
3 列子
/**
本地主机
/
InetAddress i = InetAddress.getLocalHost();// 返回本地主机。
System.out.println(i.toString());
System.out.println(i.getHostAddress());// 返回 IP 地址字符串
System.out.println(i.getHostName());// 获取此 IP 地址的主机名
/*
百度主机
/
InetAddress add1 = InetAddress.getByName(“www.baidu.com”);// 获取百度主机// 1.1.1.1
System.out.println(add1.getHostAddress() + “\t\t” + add1.getHostName());
/*
*局域网中某一台主机
*/
InetAddress add2 = InetAddress.getByName(“192.168.7.133”);// 1.1.1.1
System.out.println(add2.getHostAddress() + “\t\t” + add2.getHostName());
//如果IP地址和对应的主机名没有在网络上 ,所以没有将对应的IP地址进行解析
2 Socket编程
Socket 就是为网络服务提供的一种机制
通信的两端都有Socket
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输
java在包java.net中提供了两个类
Socket:客户端Socket是代表两台机器之间网络连接的对象
Socket socket = new Socket(“192.168.0.2”,5000);
ServerSocket:服务端
0 Telnet实现Socket编程
ServerSocket server = new ServerSocket(8888);
// 表示在8888端口上开启服务
System.out.println("等待客户端连接....");
Socket client = server.accept();// 接收客户端的连接
OutputStream out = client.getOutputStream();// 得到客户端的输出流
PrintStream ps = new PrintStream(out); // 打印流的操作,直接打印数据
ps.println("hello world");
ps.close();
client.close();
server.close();
2 URL
1 URL
统一资源定位器
指向 Internet 上的资源文件
URL 类提供 API 来访问 Internet 上的信息
URL 的组件
- 协议 IP
- 地址或主机名
- 端口号
- 实际文件路径
2 示例
URL u = new URL("http://192.168.1.1:8080/myweb/demo.html?name=abc");
System.out.println(u.getHost());
System.out.println(u.getFile());
System.out.println(u.getPath());
System.out.println(u.getPort());
System.out.println(u.getProtocol());
System.out.println(u.getQuery());
3 URLDecode和URLEncode
解码器和编码器
static String encode(String s) 已过时。 结果字符串可能因平台默认编码不同而不同。因此,改用 encode(String,String) 方法指定编码。 static String encode(String s, String enc) 使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。
static String decode(String s) 已过时。 结果字符串可能因平台默认编码不同而不同。因此,改用 decode(String,String) 方法指定编码。 static String decode(String s, String enc) 使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。
String mytext = java.net.URLEncoder.encode(“中国”, “utf-8”);
String mytext2 = java.net.URLDecoder.decode(mytext, “utf-8”);
这两条语句在同一个页面中的话,得到的结果是:
mytext: %E4%B8%AD%E5%9B%BD
mytex2: 中国

287

被折叠的 条评论
为什么被折叠?



