*阿炮的Java笔记011号*-网络编程实战,开始真正装13了!

146 阅读2分钟

老生常谈…对于大佬们根本都不用看的博客!

对于像我这种菜鸡还是得一步一步的来!如果有错误请大佬们指点指点!

网络编程简单实战

JAVA版的TCP编程

服务器

public class Server {
    public static void main(String[] args) throws IOException {
        //创建服务器socket对象作为一个接收方
        ServerSocket serverSocket = new ServerSocket(857);
        Socket socket = serverSocket.accept();
        //从客户端拿去数据
        InputStream inputStream = socket.getInputStream();
        byte[] buffer = new byte[1024];
        int len;
        while ((len = inputStream.read(buffer)) != -1) {
            System.out.println("服务器收到的信息:" + new String(buffer, 0, len));
        }
        //将数据发送给客户端
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write(("LoveLive").getBytes());
        
        socket.close();
        serverSocket.close();
    }
}

客户端

public class Client {
    public static void main(String[] args) throws IOException {
        //创建socket对象
        Socket socket = new Socket("127.0.0.1", 857);
        //输出数据给服务器端
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("start!!!!!!!come on".getBytes());
        socket.shutdownOutput();
        //从服务器端拿去数据
        InputStream inputStream = socket.getInputStream();
        byte[] buffer = new byte[1024];
        int len;
        while ((len = inputStream.read(buffer)) != -1) {
            System.out.println("客户端收到的信息:" + new String(buffer, 0, len));
        }
        socket.close();
    }
}

先运行服务器,后运行客户端,如果没有启动服务器,客户端就找不到服务器了。 输出结果如图所示:

服务器数据.png

客户端数据.png

JAVA版的UDP编程

接收方

public class Server {
    public static void main(String[] args) throws IOException {
        // 创建接收端的DatagramSocket对象
        DatagramSocket ds = new DatagramSocket(7897);
        // 创建DatagramPacket对象,接收数据。
        byte[] buffer = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
        // 将ds接受的数据放入到dp中
        ds.receive(dp);
        // 解析数据
        byte[] data = dp.getData();
        int length = dp.getLength();
        System.out.println(new String(data, 0, length));
        ds.close();
    }
}

发送方

public class Client {
    public static void main(String[] args) throws IOException {
        // 创建发送端的DatagramSocket对象。
        DatagramSocket ds = new DatagramSocket();
        // 创建数据
        String message = "LoveLive发送喽!!!";
        byte[] bytes = message.getBytes(StandardCharsets.UTF_8);
        //打包
        DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getLocalHost(), 7897);
        //发送数据
        ds.send(dp);
        ds.close();
    }
}

启动双方后,接受方的结果如图所示:

udp接收数据.png

总结

这只是对上一篇文章的进行代码简单编程!

不过这个是服务器(接收方)和客户端(发送方)都在本地运行的,也可以在同一个局域网下运行只要给对ip和端口就可以。如果是不同的网络,需要将服务器部署在具有公网IP的服务器上,然后用客户端访问这个公网IP+端口即可成功!切记公网IP的服务器一定要打开端口,否则无法访问到! 如果想要了解更深刻,可以学一学计算机网络的课程!