Java——Socket实现服务器与客户端交流

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39776901/article/details/78641865
//Server.java
import java.io.*;
import java.net.*;

public class Server {

    public static void main(String[] args) throws IOException{
        // TODO Auto-generated method stub
        //创建一个服务器端socket,指定绑定的端口号,并监听此端口
        InputStream inp;
        InputStreamReader isr;
        BufferedReader bfr;
        Socket socket;
        ServerSocket serverSocket;
        String info;
//      System.out.println("服务器启动,正在等待客户端连接");
        while(true) {
            try {
                    //System.out.println("服务器启动,正在等待客户端连接");
                    serverSocket = new ServerSocket(6666);
                    while(true) {
                        socket = serverSocket.accept();
                        inp = socket.getInputStream();
                        isr = new InputStreamReader(inp);
                        bfr = new BufferedReader(isr);

                        info = null;

                        if((info = bfr.readLine())!=null && !info.equals(" ")) {
                            System.out.println("客服端说:"+info);
                        }
                        if(info.equals(" ")) {
                            //socket.shutdownInput();
                            System.out.println("客服端表示输入完毕...");
                            break;
                        }
                    }
                PrintWriter pw;
                OutputStream ots;
                String i;
                Socket socket1;
                while(true) {
                    socket1 = new Socket("localhost",7777);
                    System.out.println("请输入数据(输入空格+回车结束输入):");
                    System.out.print(">");
                    ots = socket1.getOutputStream();
                    pw = new PrintWriter(ots);
                    pw.write("");
                    pw.write(i = new BufferedReader(new InputStreamReader(System.in)).readLine());
                    pw.flush();
                    socket1.shutdownOutput();
                    if(i.equals(" ")) {
                        System.out.println("输入已结束...等待客户端响应");
                        pw.close();
                        ots.close();
                        bfr.close();
                        isr.close();
                        inp.close();
                        socket1.close();
                        serverSocket.close();
                        break;
                    }
                }
            }catch(SocketException e) {
//              e.printStackTrace();
                System.out.println("已结束...");
            }
        }
    }
}
//Client.java
import java.io.*;
import java.net.*;

public class Client {

    public static void main(String[] args) {
        String i;
        // TODO Auto-generated method stub
        ServerSocket serverSocket;
        Socket socket,socket1;
        PrintWriter pw;
        BufferedOutputStream bos;
        OutputStream ots;
        InputStream is;
        InputStreamReader isr;
        BufferedReader br;
        while(true) {
            try {
                while(true) {
                    socket = new Socket("localhost",6666);
                    ots = socket.getOutputStream();
                    bos = new BufferedOutputStream(ots);
                    pw = new PrintWriter(bos);
                    System.out.println("请输入数据(输入空格+回车结束输入):");
                    System.out.print(">");
                    pw.write(i = new BufferedReader(new InputStreamReader(System.in)).readLine());
                    pw.flush();
                    socket.shutdownOutput();
                    if(i.equals(" ")) {
                        System.out.println("输入已结束...等待服务器回复");
                        //socket.shutdownOutput();
                        break;
                    }
                }
                serverSocket = new ServerSocket(7777);
                while(true) {
                    socket1 = serverSocket.accept();
                    is = socket1.getInputStream();
                    isr = new InputStreamReader(is);
                    br = new BufferedReader(isr);
                    String info = null;
                    if((info = br.readLine())!=null && !info.equals(" ")) {
                        System.out.println("服务器说:" + info);
                    }
                    if(info.equals(" ")) {
                        System.out.println("服务器表示输入已结束...");
                        br.close();
                        isr.close();
                        is.close();
                        pw.close();
                        ots.close();
                        bos.close();
                        socket.close();
                        socket1.close();
                        serverSocket.close();
                    }
                }
            }catch(SocketException e){
                System.out.println("已结束...");
                //e.printStackTrace();
            }catch(IOException e) {
                //e.printStackTrace();
            }
        }
    }
}

先启动服务器,再启动客户端,然后。。。就能交流了

猜你喜欢

转载自blog.csdn.net/qq_39776901/article/details/78641865