Java编程中提供了强大的网络编程功能,能够处理各种网络资源,以及进行网络通信。Java.net包定义了java语言网络编程的主要工具类。其中,包括代表网络IP地址的InetAddress类;与URL有关的URL类,和URLConnection类;与网络通信有关的Socket类和ServerSocket类。协议是实现信息通信的重要手段,通俗的讲:就是不同对象之间沟通时遵循的原则和规则。TCP(传输控制协议),IP(Inernet协议),UDP(用户数据报协议)
1、什么是网络编程
Java语言提供了强大的网络编程功能,能够处理各种网络资源以及进行网络通信,这些网络功能都包含在java.net包中。
Net包的内容大体分为3类:
1):网络资源类:URL是资源的表达方式,在java.net包中主要通过URL和InetAddress类来表示和操作网络中的资源。
2)Socket(套接字)类:Socket(套接字)用来实现网络编程中客户端和服务器的连接。Java.net包定义的Socket类和ServerSocket类分别代表通信双方的客户端和服务器端。
3)Datagram(数据报)类:Datagram类以数据报的形式实现网络通信,是基于无连接的UDP协议的一种网络通信方式。
2、InetAddress类
InetAddress类用来表示网络上的IP地址。网络中的每台主机采用IP地址进行标识,java语言中的InetAddress类对IP地址进行封装,该类提供了操作IP地址的各种方法,类本身没有构造函数,而是通过调用相关静态方法获取实例。InetAddress类中定义的主要方法如下:
equels(Object obj):将此对象与指定对象比较。
getAddress():返回此InetAddress对象的原始IP地址。
getAllByName(String host):在给定主机名的情况下,根据系统上配置的名称,服务返回其IP地址所组成的数组。
getByAddress(byte[] addr):在给定原始IP地址的情况下,返回InetAddress对象
getHostName():获取IP地址的主机名。
getHostAddress():返回IP地址字符串。
getLocalHost():返回本地主机。
hashCode():返回此IP地址的哈希吗。
toString():将此IP地址转化为String。
其他方法请查阅API 文档。
3、URL编程
Java.net包中定义了URL和URLConnection类来处理有关URL的内容。
协议是实现信息通信的重要手段。
URL:是统一资源定位符的简称,用于表示Internet上某一资源的地址。浏览器通过解析给定的URL可以查找网络上的这些资源,格式如下:
网络传输协议(protocol):资源名(resourceName)
参数protocol表示网络传输协议,如;http和ftp等。
参数resourceName表示完整的资源名,又可以分为主机名、端口号、和文件几个部分。
对于大部分协议,主机名和文件名同城是必须的,而端口号有时可以省略。
1)、创建URL
URL类的构造函数有一下几种:
URI(String str) 通过解析给定的字符串构造一个 URI。
URI(String protocol, String host, String file)
使用指定的协议,主机名,文件名创建。
URI(String protocol, String host, int port, String file)
使用指定的协议,主机名,端口号,及文件名创建
URI(String context, String spes):使用基地址和相对URL创建
2)、使用URL类
URL类主要的方法请查阅API文档
3)、URLConnection类
在java.net包中定义了URLConnction类,该类用来表示与URL建立通信连接。URLConnection类的实例通过调用URL类的openConnetion()方法获得。主要方法请查阅API文档。
4、Socket编程
基于TCP协议的Socket编程:在TCP协议中,对于一个特定连接,要求每台计算机都有一个Socket用做通信的输入输出端口。
在创建Socket对象时,作为服务器端的程序与作为客户端的程序采用的类是不同的,服务器端用ServerSocket类创建Socket对象,客户端则用Socket类创建Socket对象。
Socket类:表示套接字,在客户端创建的Socket对象与服务器端创建的Socket对象连接后即形成信息通道。
ServerSocket类:描述网络服务器。ServerSocket对象表示建立一个网络服务器去等待接收由客户端传来的请求。
TCP协议下的Socket网络通信过程:
TCP协议下的Socket通信首先从服务器端创建一个指定端口号的ServerSocket对象开始,接着运行ServerSocket对象的accept()方法等待客户端的请求,以便建立连接。在ServerSocket对象等待的过程中,如果客户端创建一个指向服务器端计算机和服务器端指定端口的Socket对象,且这个Socket对象想服务器端发出连接请求,那么ServerSocket对象就会接收到请求信息。当ServerSocket对象收到请求信息后紧接着会在本地创建一个Socket对象与客户端的Socket对象进行连接,从而让形成通道,
连接建立后,服务器端和客户端可分别建立输入/输出数据流进行数据传输。当通信结束后,需要关闭两端的Socket连接。最后,ServerSocket对象调用close()方法停止等待客户端请求。
感谢来访,有写的不好或者不对的地方,希望您能提出宝贵意见和建议,多多交流!