java网络编程基础知识介绍

 更新时间:2017年11月07日 15:04:15   作者:冬瓜蔡  
这篇文章主要介绍了java网络编程基础知识介绍,涉及OSI分层模型和TCP/IP分层模型的对应关系、IP地址、端口号、tcp、udp等相关内容,还是比较不错的,这里分享给大家,供需要的朋友参考。

网络基础知识

1、OSI分层模型和TCP/IP分层模型的对应关系

这里对于7层模型不展开来讲,只选择跟这次系列主题相关的知识点介绍。

2、七层模型与协议的对应关系

网络层 ------------ IP(网络之间的互联协议)

传输层 ------------ TCP(传输控制协议)、UDP(用户数据报协议)

应用层 ------------ Telnet(Internet远程登录服务的标准协议和主要方式)、FTP(文本传输协议)、HTTP(超文本传送协议)

3、IP地址和端口号

1、ip地址用于唯一标示网络中的一个通信实体,这个通信实体可以是一台主机,可以是一台打印机,或者是路由器的某一个端口。而在基于IP协议网络中传输的数据包,必须使用IP 地址来进行标示。ip地址就像写一封信,必须指定收件人的地址一样。每个被传输的数据包中都包括了一个源IP和目标IP。

2、ip地址唯一标示了通信实体,但是一个通信实体可以有多个通信程序同时提供网络服务。这个时候就要通过端口来区分开具体的通信程序。一个通信实体上不能有两个通信程序 使用同一个端口号。

IP地址和端口号,就像一个出差去外地入住酒店一样,IP地址表示了酒店在具体位置,而端口号则表示了这个人在酒店的房间号。

4、TCP和UDP

1、TCP是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。它能够提供两台计算机之间的可靠的数据流,HTTP、FTP、Telnet等应 用都需要这种可靠的通信通道。

2、UDP是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传送目的地,至于能够达到目的地,达到目的地的时 间以及内容的正确性都是不能保证的。

既然有了保证可靠传输的TCP协议,为什么还要非可靠传输的UDP协议呢?原因有两个:

1、可靠的传输是要付出代价的,对数据内容的正确性的检验必然会占用计算机处理时间和网络带宽。因此TCP的传输效率不如UDP高。

2、许多应用中并不需要保证严格的传输可靠性,比如视频会议系统,并不要求视频音频数据绝对正确,只要能够连贯就可以了。所以在这些场景下,使用UDP更合适些。

5、URL访问网上资源

1、URL对象代表统一资源定位器,是指向互联网“资源”的指针。它是用协议名、主机、端口和资源组成,即满足如下格式:

protocol://host:port/resourceName

http://www.crazyit.org/index.php

2、通过URL对象的一些方法可以访问该URL对应的资源:

String getFile():获取该URL的资源名

String getHost():获取主机名

String getPath():获取路径部分

int getPort():获取端口号

public static void main(String[] args) throws IOException
  {
    URL url = new URL("https://i.cnblogs.com/EditPosts.aspx?opt=1");
    String file = url.getFile();
    System.out.println(file);
    String host = url.getHost();
    System.out.println(host);
    int port = url.getPort();
    System.out.println(port);
    String query = url.getQuery();
    System.out.println(query);
    String protocol = url.getProtocol();
    System.out.println(protocol);
  }

执行结果:

1 /EditPosts.aspx?opt=1
2 i.cnblogs.com
3 -1
4 opt=1
5 https

上面展示了URL对象的常用方法,下面来看看URL最重要的两个方法:openConnection()、openStream()

public static void main(String[] args) throws IOException
  {
    URL url = new URL("http://www.baidu.com");
    URLConnection connection = url.openConnection();
    InputStream is = connection.getInputStream();
    OutputStream os = new FileOutputStream("c:/data.txt");
    byte[] buffer = new byte[1024];
    int flag = 0;
    while (-1 != (flag = is.read(buffer, 0, buffer.length)))
    {
      os.write(buffer, 0, flag);
    }
    os.close();
    is.close();
  }

执行结果:

1、代码第4行openConnection()该方法用于返回URLConnection对象,表示到URL所引用的远程连接。

2、代码第5行getInputStream方法,用于返回从此打开的连接读取的输入流。

3、后面的代码就是我们已经很熟悉的从输入流中读到数据,再通过输出流写入文件。

4、执行的结果就是我们通过浏览器访问http://www.baidu.com,百度服务器返回的内容。

5、这里是文本文件,我们将后缀修改为html,然后用浏览器访问,这样看起来更直观:

6、InetAddress

JAVA提供了InetAddress类来代表IP地址。

public static void main(String[] args) throws IOException
  {
    InetAddress address = InetAddress.getLocalHost();
    System.out.println(address);
    address = InetAddress.getByName("www.baidu.com");
    System.out.println(address);
    
  }

执行结果:

 WINDOWS-EC813QQ/192.168.88.1
 www.baidu.com/115.239.211.112

总结

以上就是本文关于java网络编程基础知识介绍的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅:Java网络编程之URL+URLconnection使用方法示例Java网络编程基础篇之单向通信等,有什么问题可以随时留言,小编会及时回复大家的,感谢朋友们对本站的支持!

相关文章

  • springboot中配置好登录拦截后,swagger访问不了问题

    springboot中配置好登录拦截后,swagger访问不了问题

    这篇文章主要介绍了springboot中配置好登录拦截后,swagger访问不了问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java 守护线程_动力节点Java学院整理

    Java 守护线程_动力节点Java学院整理

    Java语言机制是构建在JVM的基础之上的,意思是Java平台把操作系统的底层给屏蔽起来,所以它可以在它自己的虚拟的平台里面构造出对自己有利的机制,而语言或者说平台的设计者多多少少是收到Unix思想的影响,而守护线程机制又是对JVM这样的平台凑合,于是守护线程应运而生
    2017-05-05
  • java实现HmacSHA256算法进行加密方式

    java实现HmacSHA256算法进行加密方式

    这篇文章主要介绍了java实现HmacSHA256算法进行加密方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Spring Boot常用功能Profile详解

    Spring Boot常用功能Profile详解

    SpringBootProfile是一个很常用的功能,我们可以通过为开发/测试/生产环境配置不同的profile来实现配置隔离,那么在SpringBoot项目中是如何实现profile功能的呢
    2022-07-07
  • Spring Security认证的完整流程记录

    Spring Security认证的完整流程记录

    相信大伙对Spring Security这个框架又爱又恨,爱它的强大,恨它的繁琐,下面这篇文章主要给大家介绍了关于Spring Security认证流程的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • MyBatis 的 XML 配置文件和缓存使用步骤

    MyBatis 的 XML 配置文件和缓存使用步骤

    MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制,这篇文章主要介绍了MyBatis的XML配置文件和缓存,需要的朋友可以参考下
    2022-01-01
  • 动态配置Spring Boot日志级别的全步骤

    动态配置Spring Boot日志级别的全步骤

    这篇文章主要给大家介绍了关于动态配置Spring Boot日志级别的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 浅谈spring security入门

    浅谈spring security入门

    这篇文章主要介绍了浅谈spring security入门,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java 面向对象之继承篇详解原理与特点

    Java 面向对象之继承篇详解原理与特点

    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
    2021-10-10
  • 一篇看懂Java中的Unsafe类

    一篇看懂Java中的Unsafe类

    在阅读AtomicInteger的源码时,看到了这个类:sum.msic.Unsafe,之前从没见过。所以花了点时间研究了下,下面这篇文章主要给大家介绍了关于Java中Unsafe类的相关资料,需要的朋友可以参考借鉴,下面来一起学习学习吧
    2018-05-05

最新评论