美文网首页
网络编程专题

网络编程专题

作者: 攻城老狮 | 来源:发表于2021-06-10 15:21 被阅读0次

1 InetAddress类

public class InetAddressBaseMethod {
    public static void main(String[] args) throws UnknownHostException {
        //1.获取本机 InetAddress 对象
        InetAddress host1 = InetAddress.getLocalHost();
        System.out.println(host1);
        //2.根据主机名/域名获取 InetAddress 对象
        InetAddress host2 = InetAddress.getByName("LAPTOP-JUBVGF02");
        System.out.println(host2);
        InetAddress host3 = InetAddress.getByName("www.baidu.com");
        System.out.println(host3);

        //3.获取对象的主机名/域名
        String hostName = host1.getHostName();
        System.out.println(hostName);
        //4.获取对象的ip地址
        String hostAddress = host1.getHostAddress();
        System.out.println(hostAddress);
    }
}

2 基于Socket的TCP编程

2.1 使用字节流,完成C/S的通讯过程

  • server
public class SocketServer {
    public static void main(String[] args) throws IOException {
        //1.在本机8081端口监听,serverSocket可以通过accept()返回多个Socket
        ServerSocket serverSocket = new ServerSocket(8081);
        //2.等待客户端连接8081端口,阻塞等待
        Socket socket = serverSocket.accept();
        //3.读取客户端写入到数据通道的数据
        InputStream inputStream = socket.getInputStream();
        byte[] buf = new byte[64];
        int len;
        while ((len = inputStream.read(buf))!=-1){
            System.out.println(new String(buf,0,len));
        }
        //4.写回传递给客户端的数据
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("get your msg".getBytes());
        //设置结束标记
        socket.shutdownOutput();
        //5.关闭连接
        outputStream.close();
        inputStream.close();
        socket.close();
        serverSocket.close();
    }
}
  • client
public class SocketClient {
    public static void main(String[] args) throws IOException {
        //1.连接服务器(ip,port)
        Socket socket = new Socket("192.168.137.1",8081);
        //2.写入传递给服务器端的数据
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("hello server".getBytes());
        //设置结束标记
        socket.shutdownOutput();
        //3.读取服务器传递的数据
        InputStream inputStream = socket.getInputStream();
        byte[] buf = new byte[64];
        int len;
        while ((len = inputStream.read(buf))!=-1){
            System.out.println(new String(buf,0,len));
        }
        //4.关闭连接
        inputStream.close();
        outputStream.close();
        socket.close();
    }
}

2.2 使用字符流,完成C/S的通讯过程

  • server
public class SocketServer {
    public static void main(String[] args) throws IOException {
        //1.在本机8081端口监听,serverSocket可以通过accept()返回多个Socket
        ServerSocket serverSocket = new ServerSocket(8081);
        //2.等待客户端连接8081端口,阻塞等待
        Socket socket = serverSocket.accept();
        //3.读取客户端写入到数据通道的数据
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String readLine = br.readLine();
        System.out.println(readLine);
        //4.写回传递给客户端的数据
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        bw.write("get your msg");
        bw.newLine();
        bw.flush();
        //5.关闭连接
        bw.close();
        br.close();
        socket.close();
        serverSocket.close();
    }
}
  • client
public class SocketClient {
    public static void main(String[] args) throws IOException {
        //1.连接服务器(ip,port)
        Socket socket = new Socket("192.168.137.1",8081);
        //2.写入传递给服务器端的数据
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        bw.write("hello server");
        bw.newLine();
        bw.flush();
        //3.读取服务器传递的数据
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String readLine = br.readLine();
        System.out.println(readLine);
        //4.关闭连接
        br.close();
        bw.close();
        socket.close();
    }
}

3 基于Socket的UDP编程

  • server
public class SocketServer {
    public static void main(String[] args) throws IOException {
        //1.创建一个 DatagramSocket 对象,准备在8081端口接收数据
        DatagramSocket socket = new DatagramSocket(8081);
        //2.构建 DatagramPacket 对象,准备接收数据
        byte[] buf = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf, buf.length);
        //3.调用接收方法,阻塞等待
        socket.receive(packet);
        //4.拆包,取出数据并显示
        int length = packet.getLength();
        byte[] data = packet.getData();
        System.out.println(new String(data,0,length));
        
        //5.回复消息
        buf = "get your msg".getBytes();
        packet = new DatagramPacket(buf,buf.length, InetAddress.getByName("192.168.137.1"),8082);
        socket.send(packet);

        //6.关闭资源
        socket.close();
    }
}
  • client
public class SocketClient {
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket(8082);

        byte[] data = "hello server".getBytes();
        DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.137.1"),8081);
        socket.send(packet);

        byte[] buf = new byte[1024];
        packet = new DatagramPacket(buf,buf.length);
        socket.receive(packet);
        int length = packet.getLength();
        data = packet.getData();
        System.out.println(new String(data,0,length));

        socket.close();
    }
}

相关文章

  • 网络编程专题

    1 InetAddress类 2 基于Socket的TCP编程 2.1 使用字节流,完成C/S的通讯过程 serv...

  • 购书记录

    20200701:数据中心/网络专题Python网络编程网络是怎样连接的Wireshark网络分析就这么简单云计算...

  • 机器学习之softmax函数

    在上一篇专题中,我们以三层神经网络的实现为例,介绍了如何利用Python和Numpy编程实现神经网络的计算。其中,...

  • Android 网络编程 目录

    Android 网络编程 目录 Android 网络编程1 Http协议Android 网络编程2 Okhttp缓...

  • Linux网络编程篇之ICMP协议分析及ping程序实现

    Linux网络编程系列: Linux网络编程篇之Socket编程预备知识 Linux网络编程篇之TCP协议分析及聊...

  • 网络专题

    2019Android网络编程总结 1.网络分层 OSI七层模型OSI七层协议模型主要是:应用层(Applicat...

  • iOS关于HTTP协议和网络编程

    1.网络编程 1>什么是网络编程? 网络编程,是我们iOS程序开发者针对网络模块进行得代码编程,是作为一个资深开发...

  • 网络编程

    网络编程 网络编程: 网络编程主要用于解决计算机与计算机(手机、平板..)之间的数据传输问题。 网络编程: 不需要...

  • 网络基本了解

    网络基础 问题:为什么要学习网络编程?(1)网络编程是一种实时更新应用数据的常用手段(2)网络编程是开发优秀网络应...

  • Android应用开发:网络编程2

    网络编程 Java基础:网络编程 Uri、URL、UriMatcher、ContentUris详解 Android...

网友评论

      本文标题:网络编程专题

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