网络编程:网络编程主要用于解决计算机与计算机(手机、平板。。。)之间的数据传输问题。


    web方向:


    Android:常用



网络编程:不需要基于html页面就可以达到数据之间的传输。比如:feiQ, QQ, 微信。。。。



网页编程:基于html页面的基础上进行数据的交互的。比如:天猫,京东。。。。



计算机网络:分布在不同地域的计算机通过外部设备链接起来达到了消息互通,资源共享的效果就称作为一个计算机网络。



网络通讯的三要素:


    1.IP


    2.端口号


    3.协议



====================IP====================


IP地址:


    Internet上的每台主机(Host)都有一个唯一的IP地址。


    IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。


     例如159.226.1.1。(四个字节) 


IP地址类别:


    IP地址是由网络号和主机号组成


    A类地址:8位网络位,24位主机位            2^24  政府单位用                                    


    B类地址: 16位网络位,16位主机位        2^16 事业单位(学校、银行)用


    C类地址: 24位网络位,8位主机位            2^8 私人使用


特殊的IP地址


   127.0.0.1 表示 本机回环地址



InetAddress(IP类)


    常用的方法:


    getLocalHost()   返回本地主机。


    getHostAddress() 返回 IP 地址字符串(以文本表现形式)。 


    getHostName()    获取此 IP 地址的主机名。


    getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。 


    


    getAllByName(String host) 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。


    


    


====================Port====================


Port地址


    如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:2^16)个之多!


    端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。 


Port分类(0~65535)


    公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。 


    注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。我们可以用


    动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。


常用端口


    21    FTP        


    80    HTTP


    443  HTTPS


    


====================协议====================


网络通讯的协议:


    udp通讯协议的特点:


        将数据极其源和目的封装为数据包,不需要建立连接(面向无连接)。


        每个数据包大小限制在64K中。


        因为无连接,所以不可靠。


        因为不需要建立连接,所以速度快。


        比如:物管的对讲机,人说话,飞Q聊天,游戏。。。。。



    tcp通讯协议的特点:


        面向连接,有特有的通道。


        在连接中传输大数据量。


        通过三次握手机制连接,可靠协议。


        通信前必须建立连接,效率稍低。


        比如:打电话,QQ/飞Q文件的传输(电影下载)。。。。


public class Demo1 {
public static void main(String[] args) throws UnknownHostException {
//getLocalHost()获取本机的IP地址对象
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost);
System.out.println("IP地址:" + localHost.getHostAddress());
System.out.println(" IP 地址的主机名:" + localHost.getHostName());

InetAddress address = InetAddress.getByName("169.254.74.32");
System.out.println("在给定主机名的情况下确定主机的 IP 地址:" + address.getHostAddress());
System.out.println("主机名:" + address.getHostName());

InetAddress[] allByName = InetAddress.getAllByName("111.161.78.250");
for(InetAddress ip : allByName){
System.out.println(ip.getHostAddress());
System.out.println(ip.getHostName());
}
}