网络编程入门知识

Java 中专门提供 java.net 包,方便开发网络程序。Java 的网络编程包括了两种通信协议;【TCP(Transmission Control Protocal)】【UDP(User Datagram Prptocol)】

IP地址

IP 是互联网上的每一台计算机的唯一标记;

IP 可分为两类

【IPv4】32位,分4段,每段范围 0-225 十进制表示;(1)

使用4个8位的二进制数据表示,每8位之间使用圆点隔开,每个8位整数可以转换成一个0~255的十进制整数,因此我们一般看到的IP地址类似:192.168.1.1(这4段组成的个数有限度,大概是40多亿的样子,不够用,出现Ipv6);

【IPv6】128位,分8段,0000~FFFF的十六进制数值,冒号分割。如:1080:0:0:0:8:800:200C:417A


IP地址号段分类:A类留给政府机构,B类分配给中等规模的公司,C类分配给任意需要的人,D类用于组播,E类用于实验,给类可容纳的地址数目不同


Java对基本网络的支持

(1) InetAddress类要来表示IP地址,有两个子类

|-- Inet4Address(IPv4)

|-- Inet6Address(IPv6)

(2) 常用方法(主要了解获得IP地址对象的方法)

|-- static InetAddress getLocalHost():返回本地主机;

|-- static InetAddress getByName(String host) :通过主机名/域名获取IP地址。查找存在的一个IP地址,如果主机名或域名写错抛出异常;

|-- static InetAddress getByAddress(byte[] addr) :根据一个IP地址获得一个IP地址对象;

注意:参数是一个byte[]数组,如果大于127的需要进行强转成byte;

|-- boolean isReachable(int timeout):测试是否可以连接到该地址(类似ping)

    public void testIp() throws Exception {
        InetAddress localHost = InetAddress.getLocalHost();
        System.out.println(localHost);

        InetAddress[] address1 = InetAddress.getAllByName("SKY-20190405AAU");
        for(InetAddress address:address1) {
            System.out.println(address);
        }

        System.out.println(InetAddress.getByAddress(new byte[]{14,(byte)215,(byte)177,39}));
        System.out.println(InetAddress.getByName("www.baidu.com").getHostAddress());//180.97.33.107
        System.out.println(InetAddress.getByName("www.taobao.com").getHostAddress());//118.112.14.230
        System.out.println(InetAddress.getByName("www.jindong.com").getHostAddress());//61.92.24.81
        System.out.println(InetAddress.getByName("www.baidu.com").isReachable(50));
    }

Port 端口

1. 什么是端口

(1) 如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1);

(2) 简单的说:一个电脑上的应用程序都绑定了一个对应的编号(端口),通过IP可以定位到指定的主机(电脑),再加上端口就可以定位到指定的程序了;


2. 端口的分类

(1) 公认端口:0~1023,他们紧密绑定一些服务

(2) 注册端口:1024~49151,松散绑定一些服务

(3) 动态端口:49152~65535,动态使用的端口,程序一般不会使用这些端口

分类作用:现在对一些比较早的程序,它使用比较早,使用一些小的端口,被人熟知了,我们自己的开发的应用程序,尽量避免这些端口;


3. 注意:

(1) 同一台机器上不能有两个程序使用同一个端口,会冲突;

(2) 我们开发过程中一般选用注册端口或动态端口范围内的;

(3) 以后开发中最好记住我们用到过的常用软件的端口,避免我们知己设定端口的时候和他们冲突;

① Tomcat:8080/80,Mysql:3306


URL 统一资源定位符+

1. 什么是URL

(1) URL(Uniform Resource Locator)统一资源定位符,可以直接使用此类找到互联网上的资源如一个简单的网页。

(2) URL一般由http协议资源所在主机(域名或IP)端口资源名称部分组成;

如:http://itsource.cn:80/class_info/java_jichu.html


2. URL类中的常用方法:

(1) URL(String protocol, String host, int port, String file):构建一个URL对象;

(2) URL(String url):构建一个URL对象;

(3) InputStream openStream():返回一个用于从该连接读入的 InputStream;

(4) URI toURI():返回与此URL等效的URI;

(5) 更多方法请查看URL对应的API文档;


3. 通过URL读取网络文件数据体验

(1) 创建指定连接的URL对象

(2) 从URL对象上得到输入流

循环,从输入流中获得数据并打印(或者保存到本地磁盘中:相当于一个资源下载)


TCP 传输控制协议

(1) 概念:Transmission Control Protocol 传输控制协议,TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。当客户和服务器彼此交互数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据;

(2) 此协议中有两个类Socket 和ServerSocket ,其中有一些方法能够实现在两个不同的终端之间传输数据(客户端与服务端);

网络编程入门知识


UDP 用户传输协议

(1) UDP是用户数据报协议,是一个简单的面向数据报的运输层协议,UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证他们能到达目的。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,并且没有超时重发机制,故而传输速度很快;

(2) TCP的所有操作必须建立可靠的连接,这样会浪费很大的性能,为此UDP这种不可靠的连接出现并成为聊天工具的宠儿;

(3) UDP开发中使用DatagramPacket包装一条要发送的信息,之后使用DatagramSocket完成发送操作,也能够实现在两个终端之间传输数据;


TCP 和 UDP 区别

1. 基于连接与无连接;

2. 对系统资源的要求(TCP较多,UDP少);

3. UDP程序结构较简单 ;

4. 流模式与数据报模式 ;

5. TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证;

网络编程入门知识

展开阅读全文

页面更新:2024-03-13

标签:整数   端口   入门   对象   协议   简单   地址   程序   方法   知识   数据   资源

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top