zoukankan      html  css  js  c++  java
  • 网络通信

    网络通信

    • 网络编程中有两个主要问题
      • 问题1: 如何准确的定位到网络上的一台或多台主机
      • 问题2: 找到主机后如何进行通信

    javaWeb: 网页编程 B/S

    网络编程:TCP/IP c/s

    网络通信的要素

    • 对应问题1:IP和端口号

    • 对应问题2:网络通信协议 TCP/IP参考模型(应用层,传输层,网络层,物理+数据链路层)
      (以下代码记得finally关闭资源)

    IP和端口号

    IP

    唯一标识Internet上的计算机(通信实体)

    在java中使用InetAddress类代表IP

    IP地址的分类1:IPV4和IPV6

    • IPV4:4个字节组成,4个0-255.大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽,以点分十进制标识,如192.168.1.1
    • IPV6:128位(16个字节),写成8个无符号整数,每个整数用四个十六进制为表示,数之间用冒号(:)分开,如:3ffe:3201:1231:1434:c8ff:fe4d:db39:1988​

    IP地址的分类2:公网地址(万维网使用)和私有地址(局域网)

    • 192.168.开头就是私有地址,范围为192.168.0.0--192.168.255.255,专门为组织机构内部使用

    端口

    端口表示计算机上的一个程序的进程;

    • 不同的进程有不同的端口号!用来区分软件
    • 被规定 0—65535
    • TCP,UDP:65535*2 tcp:80,udp:80吗,单个协议端口号不能冲突
    • 端口分类
      • 公有端口号 0—1023
      • HTTP:80
      • HTTPS:443
      • FTP:21
      • Telent:23
    • 程序注册端口:1024——49151,分配用户或者程序
      • Tomcat:8080
      • MYSQL:3306

    通信协议

    协议:就是一个约定,好比我们在说普通话

    TCP/IP协议簇:实际上是一组协议

    • TCP:用户传输协议

    • UDP:用户数据报协议

    出名的协议:

    • TCP
    • IP:网络互连协议

    TCP UDP对比

    TCP:打电话

    • 连接,稳定

    • 三次握手,四次挥手
          
         最少需要三次,保证稳定连接
          A:你瞅啥?
          B:瞅你咋地?
          A:干一场!
         
          A:我要走了。
          B:你真的要走了吗?
          B:你真的真的要走了吗?
          A:我真的要走了。
      
    • 客户端 服务端

    • 传输完成,释放连接,效率低

    UDP:发短信

    • 不连接,不稳定
    • 客户端、服务端:没有明确的界限
    • 不管准没准备好,都可以发给你
    • 导弹(什么时候发都可以)

    TCP实现聊天

    客户端

    1.连接服务器ServerSocket

    2.发送消息

    服务端

    1.建立服务的端口ServerSocket

    2.等待用户的连接 accept

    3.接收消息

    实现文件上传


    URL

    https://www.baidu.com/

    统一资源定位符:定位资源的,定位互联网上的某一个资源

    DNS域名解析

    协议://ip地址:端口/项目名/资源

    • URL下载网络资源(前提要启动Tomcat)
    package com.mjh.net;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    
    import java.net.URL;
    
    public class URLDown {
        public static void main(String[] args) throws IOException {
            //1.下载地址
            URL url = new URL("https://m10.music.126.net/20200728182138/2baf74e0fd94ad0e48b39cdf46a08d06/yyaac/0708/0652/0508/0b9b6827b718aa223af92bd52aa2424f.m4a");
            //2.连接到这个资源  HTTP
            HttpURLConnection urlConnection= (HttpURLConnection) url.openConnection();
            InputStream inputStream=urlConnection.getInputStream();
    
            FileOutputStream fos=new FileOutputStream("4f.m4a");
            byte[] buffer=new byte[1024];
            int len;
            while ((len=inputStream.read(buffer))!=-1){
                fos.write(buffer,0,len);//写出这个数据
            }
            fos.close();
            inputStream.close();
            urlConnection.disconnect();//断开连接
        }
        
    }
    
  • 相关阅读:
    java第五周作业
    ajax初探--实现简单实时验证
    Html+CSS二周目--->常用概念
    Html+CSS--->第一周初探
    Servlet细节整合
    多线程基础
    设计模式之单例模式(Singleton)
    配置文件Java读写
    Java基础之IO流
    JDBC基础
  • 原文地址:https://www.cnblogs.com/mjjh/p/13391066.html
Copyright © 2011-2022 走看看