Java语言的优势之一是Java程序能访问网络资源。Java提供一系列的类支持Java程序访问网络资源。

TCP/IP协议和IP地址

为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TCP/IP协议,它是Internet中各方所遵循的公共协议.TCP(Transport Control Protocol)是一种传输控制协议,IP(Internet Protocol)是一种网际协议,TCP/IP代表这两个协议的。

TCP/IP分为四个层次:

  • 网络接口层:负责接收和发送物理帧;
  • 网络层:负责相邻节点之间的通信;
  • 传输层:负责起点到终点的通信;
  • 应用层:提供诸如文件传输、电子邮件等应用程序。

TCP协议将任何网络信息传输当作信息流。例如,机器A上的一个长报文发送到机器B,发送端A需要将数据分片,把一片片数据分别打包发送。数据包有一个头,指明该数据包发往何处、凶中数据在接收序列中所处的位置。每个包都按照IP地址提供的目的地从一个台机器传送到另一台机器,或从一个网络节点传送到另一个网络节点。在接收端B,这些数据包都能够按照正确的顺序重新组装起来。

TCP/IP协议是一个协议族,由一组协议组成,主要包含以下更具体的协议:

  • Telnet(远程登录):允许一台计算机用户登录到另一台远程计算机上,使远程操作如同在本地计算机上操作一样。
  • FTP(File Transfer protocol,文件传输协议):允许用户将远程主机上的文件复制到自己的计算机上。
  • SMTP(simple Mail Transfer Protocol,简单邮件传输协议):用于传输电子邮件。
  • NFS(Network file Server,网络文件服务器):使多台计算机透明地访问彼此的目录。
  • HTTP:一种超文本传输协议,它是基于TCP/IP协议的,是WWW浏览器和服务器之间应用层的通信协议。HTTP是一种通用、无状态、面向对象的协议。HTTP会话(事务)包括四个步骤:连接(Connection)、请求(Request)、应答(Response)和关闭(Close)。

Java语言可编写低层的网络应用。例如,传输文件,建立邮件控制器,处理网络数据等。Java语言支持的Internet协议有ftp、telnet、www等,支持网络通信的软件都在java.net包中,例如,java.net.ftp、java.net.www等。

IP地址用于指明因特网上的一台计算机在网络中的地址,用32位二进制代码表示一个网络地址。地址分A、B、C、D、E五类,常用的是A、B、C三类:

  • A(1.0.0.0-126.255.255.255):0,7位网络号,后24位为主机号;
  • B(128.0.0.0-191.255.255.255):10,14位网络号,后16位为主机号;
  • C(192.0.0.0-223.255.255.255):110,21位网络号,后8位为主机号;
  • D(224.0.0.0-239.255.255.255):1110,28位多点广播组标号;
  • E(240.0.0.0-254.255.255.255):1111,保留试验使用。

通常,IP地址用四段十进制数表示(8位一段)。例如:
    116.255.226.187
或用文字域名表示。例如:
    www.weixueyuan.net
在因特网上,域名服务器(Domain Name Server,DNS)执行文字名称到二进制网络地址的映射。

InetAddress类

Java.net包中有InetAddress类的定义,InetAddress类的对象用于IP地址和域名,该类提供以下方法:

  • getByName(String s):获得一个InetAddress 类的对象,该对象中含有主机的IP地址和域名,该对象用如下格式表示它包含的信息:www.sina.com.cn/202.108.37.40;
  • String getHostName():获取InetAddress对象的域名;
  • String getHostAddress():获取InetAddress对象的IP地址;
  • getLocalHost():获得一个InetAddress对象,该对象含有本地机的域名和IP地址。

【例 13-1】 说明Inetaddress类的用法的应用程序。程序演示如何获取www.weixueyuan.net的域名和IP地址。

 Import java.net.*;
Class Example10_1{
public static void main(String args[]){
try{ //以下代码通过域名建立InetAddress对象:
InetAddress addr = InetAddress.getByname(“www.cnblogs.com”);
String domainName = addr.getHostName();//获得主机名
String IPName = addr.getHostAddress();//获得IP地址
System.out.println(domainName);
System.out.println(IPName);
}catch(UnknownHostException e){
e.printStackTrace();
}
}
}

运行结果为:

www.cnblogs.com
42.121.252.58

系列文章:

Java知多少(103)网络编程之IP地址和InetAddress类的更多相关文章

  1. 3.Java网络编程之IP

    前面两篇博文我们已经简单了解了IP.端口.协议以及两种参考模型,我们现在重新从程序角度来看下这个参考模型. 如果我们从事的是Web网站开发,那么我们应该知道HTML是一种超文本标记语言 (Hyper ...

  2. Java:网络编程之IP、URL

    java.net  类 InetAddress 此类表示互联网协议 (IP) 地址. 会抛出异常 UnknownHostException   直接已知子类:         Inet4Address ...

  3. 7.4 (java学习笔记)网络编程之TCP

    一.TCP 1.1 TCP(Transmission Control Protocol 传输控制协议),是一种面向连接的,安全的传输协议,但效率相比于UDP而言比较低. TCP传输时需要确保先建立连接 ...

  4. 十二. 网络与数据库编程1.IP地址和InetAddress类

    Java语言的优势之一是Java程序能访问网络资源.Java提供一系列的类支持Java程序访问网络资源. TCP/IP协议和IP地址 为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TC ...

  5. java网络编程之TCP通讯

    java中的网络编程之TCP协议的详细介绍,以及如何使用,同时我在下面举2例说明如何搭配IO流进行操作, /* *TCP *建立连接,形成传输数据的通道: *在连接中进行大数据量传输: *通过三次握手 ...

  6. Java网络编程之TCP、UDP

    Java网络编程之TCP.UDP 2014-11-25 15:23 513人阅读 评论(0) 收藏 举报 分类: java基础及多线程(28) 版权声明:本文为博主原创文章,未经博主允许不得转载.   ...

  7. Java网络编程之UDP

    Java网络编程之UDP 一.C/S架构中UDP网络通信流程 ①创建DatagramSocket与DatagramPacket对象 ②建立发送端,接收端 ③建立数据包 ④调用Socket的发送.接收方 ...

  8. Java网络编程之URL和URI

    Java网络编程之URL与URI 一.URL与URI简介 URI = Universal Resource Identifier 统一资源标志符 URL = Universal Resource Lo ...

  9. Java网络编程之InetAddress浅析

    Java网络编程之InetAddress浅析 一.InetAddress综述 IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础.InetA ...

随机推荐

  1. 运行程序,解读this指向---case3

    片段1 var myObj = { fullname: "Hou Yi", getFullName: function(){ var self = this; console.lo ...

  2. supervisor管理进程工具配置

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...

  3. 每天刷Web面试题(前10天汇总)

    一.算法题部分   1. 如何获取浏览器URL中查询字符串中的参数? function getParamsWithUrl(url) {       var args = url.split('?'); ...

  4. TCO 2015 1A Hard.Revmatching(Hall定理)

    \(Description\) 给定一个\(n\)个点的二分图,每条边有边权.求一个边权最小的边集,使得删除该边集后不存在完备匹配. \(n\leq20\). \(Solution\) 设点集为\(S ...

  5. 随机查出满足条件的5条数据(tp5)

    随机查出满足条件的5条数据 public function showQuestion() { $data[; $data[ $data['level'] = (int)$data['level']; ...

  6. UIProgressView进度条

    //非原创 UIProgressView顾名思义用来显示进度的,如音乐,视频的播放进度,和文件的上传下载进度等. 下面以一个简单的实例来介绍UIprogressView的使用. @interface  ...

  7. 迭代函数:zip、enumerate,list解析

    #encoding:utf-8 """ 并行迭代: zip enumerate 获取元素及下标 list解析 iter """ #zip # ...

  8. What is a UINavigationTransitionView

    **AFAIK UINavigationTransitionView is a class used to animate UINavigationController child views aro ...

  9. java.awt.headless 模式

    1. 什么是 java.awt.headless? Headless模式是系统的一种配置模式.在系统可能缺少显示设备.键盘或鼠标这些外设的情况下可以使用该模式. 2. 何时使用和headless mo ...

  10. iOS开源项目之日志框架CocoaLumberjack

    CocoaLumberjack是Mac和iOS上一个集快捷.简单.强大和灵活于一身的日志框架.CocoaLumberjack类似于流行的日志框架(如log4j),但它是专为Objective-C设计的 ...