美文网首页
Java 网络编程基础

Java 网络编程基础

作者: 码农UP2U | 来源:发表于2020-03-19 23:11 被阅读0次

    IP 地址所对应的对象

    Java 提供了一个类,可以获取与 IP 地址相关的一些值,这里见的列举常用的方法,代码如下:

    InetAddress localHost = InetAddress.getLocalHost();
    System.out.println(localHost);
    InetAddress byName = InetAddress.getByName("MacBook-Pro.local");
    System.out.println(byName);
    InetAddress byName1 = InetAddress.getByName("192.168.0.105");
    System.out.println(byName1);
    InetAddress byName2 = InetAddress.getByName("www.baidu.com");
    System.out.println(byName2);
    System.out.println(byName2.getHostAddress());
    System.out.println(byName2.getHostName());
    

    代码输出如下图:


    InetAddress

    TCP 服务端

    在网络编程中典型的模式是 C/S 模式,C 是客户端,S 是服务端。
    顾名思义,服务端是为客户端提供的服务的,因此服务端始终保持一个工作状态,而客户端是随着客户的意愿而发起的,当客户访问服务器,由服务器为客户进行服务,服务完毕后客户端就与服务端断开连接。
    通常服务端会监听一个端口,等待客户端的请求,当客户端的请求到达后,服务端就可以和客户端进行通信了。
    服务端的代码如下:

        public static void main(String[] args) throws IOException {
            // 创建 ServerSocket 对象
            ServerSocket serverSocket = new ServerSocket(10000);
            // 获取服务端的套接字对象
            Socket server = serverSocket.accept();
            // 接收客户端的输入
            // 获取输入流对象
            InputStream inputStream = server.getInputStream();
            byte[] buf = new byte[1024];
            int length = inputStream.read(buf);
            System.out.println("客户端传输的数据是:" + new String(buf, 0, length));
    
            // 返回客户端数据
            OutputStream outputStream = server.getOutputStream();
            outputStream.write("你好,收到".getBytes());
    
            // 关闭流对象
            outputStream.close();
            inputStream.close();
            server.close();
            serverSocket.close();
        }
    

    TCP 客户端

    客户端会去通过 IP 地址与 端口号 去连接指定的服务器,当连接到服务器以后就可以进行通信了,代码如下:

        public static void main(String[] args) throws IOException {
            // 创建客户端的套接字
            Socket client = new Socket("127.0.0.1", 10000);
            // 向外进行输出
            // 获取输出流对象
            OutputStream outputStream = client.getOutputStream();
            // 输出数据
            outputStream.write("hello java".getBytes());
    
            // 接收服务端返回的消息
            InputStream inputStream = client.getInputStream();
            byte[] buf = new byte[1024];
            int length = inputStream.read(buf);
            System.out.println("服务端的相应数据:" + new String(buf, 0, length));
    
            // 关闭操作
            inputStream.close();
            outputStream.close();
            client.close();
        }
    

    以上便是一个简单的基于 TCP 的简单的网络编程。



    微信中搜索 “码农UP2U” 关注我的公众号吧!!!

    相关文章

      网友评论

          本文标题:Java 网络编程基础

          本文链接:https://www.haomeiwen.com/subject/hwiryhtx.html