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

来源:互联网 发布:男生直播软件 编辑:程序博客网 时间:2024/06/12 22:58
//Server.javaimport 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.javaimport 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();            }        }    }}

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

阅读全文
2 0
原创粉丝点击