网络编程两个主要问题

    • 如何精准地定位到网络上一台或者多台主机,定位主机上面特定的应用
    • 找到主机后如何可靠高效的进行数据传输

    网络编程的两个要素:

    • 对应问题一:IP和端口号
      • IP地址:
        • 分类为IPV4:4个字节组成,2011年已经用尽,例如192.168.0.1 ; IPV6:16个字节组成,
        • 万维网和局域网
        • InetAddress类
          • 实例化
            • getByName(String host); host可以为域名,也可以为ip地址.
            • getLocalHost(),获取本机ip地址对象
          • 方法
            • getHostName() 获取本机域名
            • getHostAddress() 获取主机地址
      • 端口号:标识计算机正在运行的进程(程序)
        • 公认端口号:0~1023,被服务通信占用
        • 注册端口号1024~49151,分配给用户进程或者应用程序(Mysql:3306,Tomcat:8080)
        • 动态/私有端口:49152-65535
      • 端口号和IP地址组组合出一个网络套接字:Socket
    • 对应问题二:提供网络通信协议
      • UDP (类似短信)
        • 将数据及源和目的封装成数据包中,不需要建立连接
        • 每个数据包的大小限制在64k
        • 无需连接,是不可靠协议
        • 不需要建立连接,速度快
      • TCP(类似打电话 )
        • 建立连接,形成传输数据的通道
        • 在连接中进行大量数据的传输
        • 通过三次握手完成连接,是可靠协议
        • 必须建立连接,效率会稍低

    URL网络编程

    • 统一的定位资源,对应互联网的某一资源地址
    • http(协议)://localhost(主机名):8080(端口号)/exapmles/haha.text(资源地址)?user=adong(参数列表)
    • URL类的方法
      • 构造方法:new URL(String spec)
      • getProtocol() : 获取URL协议名
      • getHost() : 获取URL主机名
      • getPort() :获取URL端口号
      • getPath() :获取URL文件路径
      • getFile() : 获取URL文件名
      • getQuery() : 获取URL查询名