Java 网络编程基础

2020-03-19  本文已影响0人  码农UP2U

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” 关注我的公众号吧!!!

上一篇 下一篇

猜你喜欢

热点阅读