网络通信

网络通信

  • 网络编程中有两个主要问题
    • 问题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();//断开连接
    }
    
}
posted @ 2020-07-28 14:48  林森001  阅读(134)  评论(0编辑  收藏  举报