• 大龄屌丝自学笔记Java零基础到菜鸟038


    网络模型、要素,Socket,UDP,TCP

    1、网络模型

    OSI:Open System Interconnectopn,开放系统互连。

        【物理层】-【数据链路层】-【网络层】-【传输层】-【会话层】-【表示层】-【应用层】

    TCP/IP:

        【主机至网络层】-----------【网际层】-【传输层】-【应用层】

    2、要素

    网络编程三要素:IP地址,端口,协议。

    UDP协议:数据打包不建立连接,数据有限制,效率高,不可靠。(类似发短信)

    TCP协议:建立数据通道,数据无限制,效率低,可靠。(类似打电话)

    InetAddress类(IP地址对象类)

    3、Socket

    Socket套接字:网络上具有唯一标识的IP地址和端口号组合在一起,构成唯一能被识别的标识符套接字。

    Socket原理机制:通信两端都有Socket对象,且所有通信都是通过Socket间的IO流进行操作。

    4、UDP

    接收:【创建UDP接收端Socket对象】-【创建用于接收数据的数据包】-【接收数据】-【解析数据包】-【释放资源】

    发送:【创建UDP发送端Socket对象】-【创建数据并打包】-【发送数据】-【释放资源】

    DatagramSocket类,DatagramPacket类

     1 //接收
     2 DatagramSocket ds = new DatagramSocket(10086);  //创建接收端Socket对象
     3 byte[] bys = new byte[1024];  //创建数据
     4 int length = bys.length;  //长度
     5 DatagramPacket dp = new DatagramPacket(bys,length)  //用于接受数据的数据包(容器)
     6 ds.receive(dp);  //接收数据
     7 byte[] bys2 = dp.getData();  //解析数据
     8 System.out.println(new String(bys2,0,bys2.length));  //输出
     9 ds.close();  //释放资源
    10 
    11 //发送
    12 DatagramSocket ds = new DatagramSocket();  //创建发送端Socket对象
    13 byte[] bys = "Hello World".getBytes();  //创建数据
    14 int length = bys.length;  //长度
    15 InetAddress address = InetAddress.getByName("192.168.12.34");  //IP地址
    16 int port = 10086;  //端口
    17 DatagramPacket dp = new DatagramPacket(bys,length,address,port)  //数据打包
    18 ds.send(dp);  //发送数据
    19 ds.close();  //释放资源

    5、TCP

    接收:【创建TCP服务端Socket对象】-【监听客户端连接】-【获取输入流,读数据】-【释放资源】

    发送:【创建TCP客户端Socket对象】-【获取输出流,写数据】-【释放资源】

    Socket类,ServerSocket类

     1 //接收
     2 ServerSocket ss = new ServerSocket(8888);  //创建服务端Socket对象
     3 Socket s = ss.accept();  //监听
     4 InputStream is = new s.getInputStream();  //输入流
     5 byte[] bys = new byte[1024];  //创建数据
     6 int len = is.read(bys);  //长度
     7 String str = new String(bys,0,len);  //读数据
     8 System.out.println(str);  //输出
     9 s.close();  //释放资源
    10 
    11 //发送
    12 InetAddress address = new InetAddress.getByName("192.168.12.34"); //IP地址
    13 int port = 8888;  //端口
    14 Socket s = new Socket(address,port);  //创建客户端Socket对象
    15 OutputStream os = new s.getOutputStream();  //输出流
    16 os.write("Hello World".getBytes());  //写数据
    17 s.close();  //释放资源
  • 相关阅读:
    关闭浏览器清除cookie
    JSONP跨域请求数据报错 “Unexpected token :”的解决办法
    HTTP请求方法
    Html 中判断某个class的个数
    将div标签中的table水平居中
    js阻止事件冒泡
    Vue中V-bind的使用。为何标签中style="height:90px"也需要写为V-bind:style="height:90px",哪些属性需要绑定?哪些属性不需要绑定?
    css中 !important的作用。
    Notification通知
    DataAdapter中DeleteCommand和UpdateCommand
  • 原文地址:https://www.cnblogs.com/liverpool/p/4918311.html
Copyright © 2020-2023  润新知