20190119——Java从入门到精通 第十九章 网络通信

Internet提供了大量、多样的信息。很少有人能在接触过Internet后拒绝他的诱惑,计算机网络实现了多个计算机互联系统,相互连接的计算机之间彼此能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序,这些程序相互可以交换数据。而编写网络应用程序,首先必须明确网络应用程序所需要使用的网路协议,TCP、IP协议是网络应用程序的首选

网络程序设计是指编写与其他计算机进行通信的程序.java已经将网络程序所需要的东西封装成不同的类。只要创建这些类的对象,使用相应的方法,即使设计人员不具备有关的网络制式,可以编写出高质量的网络通信程序。

网络协议
网络协议规定了计算机之间连接的物理、机械(网线与网卡的链接规定)、电气等特征以及计算机之间的相互寻址规则、数据发送冲突的解决、长的数据如何分段传送与接收等。就像不同的国家有不同的法律一样,目前网络协议也有很多种,下面简单的介绍几个常用的网络协议。

ip协议
IP是Internet Protocol的简称,他是一种网络协议,Internet网络采用的协议是TCP/IP协议,其全称是Transmission Control Protocol/Internet Protocol Internet依靠TCP/IP协议,在全球范围内实现不同的硬件结构、不同操作系统、不同网络系统的互联。在Internet网络上存在数以亿计的主机,每一台主机在网络上分配的Internet地址代表自己,这个地址就是IP地址,到目前为止IP地址用4个字节,也就是32为的二进制数来表示,称为IPv4.为了便于使用。通常取用每个字节的十进制数,并且每个字节之间用圆点隔开来表示IP地址。

TCP/ip模式是一种层次结构,共分为4层,分别应用层,传输层、互联网层和网络层。各层实现特定的功能,提供特定的服务和访问接口,并且具有相对的独立性。

TCP与UDP协议
在TCP与IP协议栈中,有两个高级协议是网络应用程序编写者应该了解的,即传输控制协议与用户数据报协议
TCP协议是一种以古连接线为基础的协议,她提供两台计算机间可靠的数据传送。TCP可以保证从一端数据送至链接的另一端低,数据能够确实送达,而且抵达的数据的排列顺序和送出是的顺序相同,因此TCP协议呵呵可靠性要求比较高的场合,
HTTP、FTP、Telnet等都需要使用可靠的通信频道

UDP是无连接通信协议,不保证可靠数据的传输,但能够像若干个目标发送数据,接受发自若干个源的数据。UDP是以独立发送数据包的方式进行,这种方法就像邮递员送信给收信人,可以寄出很多信给同一个人,每个信都是相对独立的,信送达的顺序并不重要,收信人接受信件的顺序也不能保证与寄出信件的顺序相同。

端口和套接字
一般而言,一台计算机只有单一的练到网络的物理连接,所有的数据都通过次链接对内,对外送达特定的计算机,这就是端口。网络程序设计中的端口port并非真实的物理村口,FTP服务使用21端口,假如一台计算机提供了HTTP与Ftp多种服务,那么客户机会通过不同的端口来确定链接到服务器的哪项服务上。

通常,0~1023之间的端口数用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口数,以避免端口号与另一个应用或系统服务所用端口冲突。

网络程序中的套接字(Socket)用于将应用程序与端口链接起来。套接字是一个假想的链接装置。就像插头的设备插座用于链接电器与电线一样。

Tcp程序设计基础
Tcp网络程序设计是指利用Socket类编写通信程序,利用TCP协议进行通信的两个应用程序是有主次之分的,一个称为服务器程序,另一个称为客户机程序,两者的功能和编写方法大不一样,服务器端与客户端的交互过程。

InetAddress类
java.net包中的InetAddress类是IP地址相关的类,利用该类可以获取IP地址、主机地址等信息。
常用的方法如表
getByName(String host) 返回值 InetAddress 获取Host相对应的InetAddress对象
getHostAddress() 返回值String 获取InetAddress对象所含的IP地址
getHostName() 返回值String 获取此IP地址的主机名
getLocalHost() InetAddress 返回本地主机的InetAddress对象

package chapter19;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class Address {
    public static void main(String[] args) {
        InetAddress ip;
        try{
            ip=InetAddress.getLocalHost();
            String localname =ip.getHostName();
            String localip=ip.getHostAddress();
            System.out.println("本机名:"+localname);
            System.out.println("本机IP地址:"+localip);
        }catch(UnknownHostException e){
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值