zoukankan      html  css  js  c++  java
  • Java

    Java - 网络编程(NetWork)
     
    一、java.net包下的 InetAddress 类的使用:
        > 一个 InetAddress 代表着一个IP地址
        > 主要用来查看本机的IP和主机名
     
    1、方法介绍:
        > InetAddress inet = InetAddress.getByName("www.baidu.com");:调用静态方法创建一个对象
        > getHostName();:返回IP地址的域名
        > getHostAddress();:返回IP地址的IP号
        > InetAddress inet = InetAddress.getLocalHost();:获取本机的IP
     
    二、TCP 和 UDP
    1、两者的区别:
        > TCP
            > 使用TCP协议前,须先建立连接,行程传输数据通道
            > 传输前,采用"三次握手"方式,是可靠的
            > TCP协议进行通信的两个应用进程:客户端(Client) 、服务端(Server)
            > 在连接中可进行大数据量的传输
            > 传输完毕,需释放已建立的连接,传输效率有点低
        > UDP
            > 将数据、源、目的封装成数据包,不需要建立连接
            > 每个数据报的大小限制在64K内
            > 因无需连接,故事不可靠的
            > 发送数据结束时,无需释放资源,传输效率高
     
    2、TCP协议的传输
        > 客户端实现
        // 创建一个 Socket 对象,指明IP和端口号
        Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 8080);
        OutputStream os = socket.getOutputStream();
        // 发送数据给服务端
        os.write("我是客户端".getBytes());
        os.close();
        socket.close();
        > 服务端实现
        ServerSocket server = new ServerSocket(8080);
        Socket socket = server.accept();
        InputStream is = socket.getInputStream();
        byte[] b = new byte[20];
        int len;
        while ( (len = is.read(b)) != -1){
            String str = new String(b, 0, len);
        } 
        is.close();
        socket.close();
        server.close();
        
    3、UDP协议的传输
        > 通过 DatagramSocket 类和 DatagramPacket 类实现了基于UDP协议的网络程序
        > UDP 数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到
           目的地,也不确定什么时候能送到
        > DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP
           地址和端口号
        > UDP协议中每个数据报都给出了完整的地址信息,因为无须建立发送方和接收方的连接
     
        > 发送端实现:send()
        DatagramSocket ds = new DatagramSocket();
        byte[] b = "要发送的内容".getBytes();
        DatagramPacket pack = new DatagramPacket(b, 0, b.length,
                                               InetAddress().getByName("127.0.0.1"), 8080);
        ds.send(pack);
     
        > 接收端实现:receive()
        DatagramSocket ds = new DatagramSocket();
        byte[] b = new byte[1024];
        DatagramPacket pack = new DatagramPacket(b, 0, b.length);
        ds.receive(pack);
        String str = new String(pack.getData(), 0, pack.length);
        System.out.println(str);
  • 相关阅读:
    01.Markdown学习
    微信小程序开发基础
    如何在本地搭建微信小程序服务器
    Golang | 报错
    Golang | 扩展
    Golang | 基础
    Golang | 基础
    Golang | 基础
    Chrome——书签同步码云
    Rustlings_structs
  • 原文地址:https://www.cnblogs.com/kafeibuku/p/4988337.html
Copyright © 2011-2022 走看看