• socket编程1-echoclient


    talk()方法,不断读取用户从控制台输入的字符串,然后发送给EchoServer,再把EchoServer返回的字符串打印到控制台。如果用户输入字符串为“bye”,就结束与EchoServer的通信,关闭socket连接。

    package Chapter1;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.Socket;

    public class EchoClient {
        String host = "localhost";
        int port = 8000;
        Socket socket;

        public static void main(String[] args) {
            try {
                new EchoClient().talk();
            } catch (Exception e) {
                System.out.println("访问异常");
            }
        }

        public EchoClient() {
            try {
                socket = new Socket(host, port);
                System.out.println("客户端程序开始访问");
                System.out.println("客户端talk,端口号:" + socket.getLocalPort());
            } catch (IOException e) {
                System.out.println("无法访问指定端口号 " + port);
            }
        }

        public void talk() {
                try {
                    if (socket != null) {
                        System.out.println("---------------- " + "请输入传输信息: ");
                        // 通过输入流读取到键盘输入字符
                        InputStreamReader sysin = new InputStreamReader(System.in);
                        BufferedReader localReader = new BufferedReader(sysin);
                        String msg = localReader.readLine();
                        // 使用输出流到服务器端socket
                        PrintWriter pw = getWriter(socket);
                        pw.println(msg);
                        // 通过输入流读取服务器端返回的内容
                        BufferedReader br = getReader(socket);
                        // 如果服务器端返回over,就关闭socket;如果未返回over就继续talk()
                        String response=br.readLine();
                        if (response.equals("over")||response.equals("echobye")) {
                            socket.close();
                            System.out.println("接收到服务器端返回"over",客户端关闭socket");
                        } else {
                            System.out.println("得到服务器端返回: " + response);
                            talk();
                        }
                    }
                } catch (IOException e) {
                    System.out.println("talk方法异常");
                }
            }

        private BufferedReader getReader(Socket socket) throws IOException {
            InputStream socketIn = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(socketIn));
            return br;
        }

        private PrintWriter getWriter(Socket socket) throws IOException {
            OutputStream socketOut = socket.getOutputStream();
            PrintWriter pw = new PrintWriter(socketOut, true);
            return pw;
        }
    }

  • 相关阅读:
    HTML初步学习7
    HTML初步学习6
    HTML初步学习5
    HTML初步学习4
    poj3449Geometric Shapes
    poj2074Line of Sight(直线相交)
    2014 Multi-University Training Contest 4
    poj3347Kadj Squares
    poj1556The Doors
    poj3608Bridge Across Islands(凸包间最小距离)
  • 原文地址:https://www.cnblogs.com/stay-sober/p/4158791.html
Copyright © 2020-2023  润新知