栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Java网络编程demo

Java 更新时间:发布时间: 百科书网 趣学号

首先是个最基础的客户端/服务端通信

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8888);
        Socket accept = serverSocket.accept();
        InputStream inputStream = accept.getInputStream();
        byte[] b=new byte[1024];
        int len=inputStream.read(b);
        System.out.println(new String(b,0,len));
        OutputStream out=accept.getOutputStream();
        out.write("你好客户端".getBytes());
        accept.close();
        serverSocket.close();
    }
}
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TCPClient {
    public static void main(String[] args) throws IOException {
        Socket socket=new Socket("127.0.0.1",8888);
        OutputStream os=socket.getOutputStream();
        os.write("你好服务器".getBytes());
        InputStream in=socket.getInputStream();
        byte[] b=new byte[1024];
        int read = in.read(b);
        System.out.println(new String(b,0,read));
        socket.close();
    }
}

先启动服务端


我自己的理解是:这里的InputStream是打开别人的信展示到我的视野里,OutPutStream是写入我的大脑里。如果我想给别人通信,我用OutputStream写信,他用InputStream读。

网络文件通信

import java.io.*;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws IOException {
        FileInputStream fileInputStream = new FileInputStream("C:\Users\123\Desktop\个人文件夹\壁纸\柴犬r.jpg");
        Socket socket = new Socket("127.0.0.1", 8888);
        OutputStream os = socket.getOutputStream();
        int len;
        byte[] b = new byte[1024];
        //读取本地文件
        while ((len = fileInputStream.read(b)) != -1) {
            os.write(b, 0, len);
        }
        socket.shutdownOutput(); //截断输出流
        //上传文件
        InputStream in = socket.getInputStream();
        while ((len = in.read(b)) != -1) {
            System.out.println(new String(b, 0, len));
        }

        fileInputStream.close();
        socket.close();
    }
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class Server {
    public static void main(String[] args) throws IOException {
                ServerSocket sc = new ServerSocket(8888);
        Socket socket = sc.accept();
        InputStream in = socket.getInputStream();
        File file = new File("d:\upload");
        if (!file.exists()) {
            file.mkdirs();
        }
        //生成文件名
        String fileName = "\swpu" + System.currentTimeMillis() + new Random().nextInt(9999) + ".jpg";
        FileOutputStream out = new FileOutputStream(file + fileName);
        int len;
        byte[] b = new byte[1024];
        while ((len = in.read(b)) != -1) {
            out.write(b, 0, len);
        }
        socket.getOutputStream().write("上传成功".getBytes());
        in.close();
        out.close();
        socket.close();
    }
}

不过这种只能实现一次连接,上传后服务器关闭,如果要保持服务器开启就在外面加个while
为了模拟多个服务器,开启多线程

    public static void main(String[] args) throws IOException {
        ServerSocket sc = new ServerSocket(8888);
        //保持服务器开启
        while (true) {
            Socket socket = sc.accept();
            new Thread(() -> {
                try {
                    InputStream in = socket.getInputStream();
                    File file = new File("d:\upload");
                    if (!file.exists()) {
                        file.mkdirs();
                    }
                    String fileName = "\swpu" + System.currentTimeMillis() + new Random().nextInt(9999) + ".jpg";
                    FileOutputStream out = new FileOutputStream(file + fileName);
                    int len;
                    byte[] b = new byte[1024];
                    while ((len = in.read(b)) != -1) {
                        out.write(b, 0, len);
                    }
                    socket.getOutputStream().write("上传成功".getBytes());
                    in.close();
                    out.close();
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }).start();
        }
    }


接着深入的话就可以开始netty了

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/295136.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号