• socket双向通信


    客户端

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
    public class Client {
        public static void main(String[] args) {
            Socket socket = null;
            BufferedReader in = null;
            BufferedWriter out = null;
            BufferedReader wt = null;
            try {
                //创建Socket对象,指定服务器端的IP与端口
                socket = new Socket(InetAddress.getLocalHost(), 8888);
                //获取scoket的输入输出流接收和发送信息
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new BufferedWriter(new 
                                       OutputStreamWriter(socket.getOutputStream()));
                wt = new BufferedReader(new InputStreamReader(System.in));
                while (true) {
                    //发送信息
                    String str = wt.readLine();
                    out.write(str + " ");
                    out.flush();
                    //如果输入的信息为“end”则终止连接
                    if (str.equals("end")) {
                        break;
                    }
                    //否则,接收并输出服务器端信息
                    System.out.println("服务器端说:" + in.readLine());
                }
            catch (UnknownHostException e) {
                e.printStackTrace();
            catch (IOException e) {
                e.printStackTrace();
            finally {
                // 关闭资源
                if (out != null) {
                    try {
                        out.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (in != null) {
                    try {
                        in.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (wt != null) {
                    try {
                        wt.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (socket != null) {
                    try {
                        socket.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }


    服务端

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
     
    public class Server {
        public static void main(String[] args){
            Socket socket = null;
            BufferedReader in = null;
            BufferedWriter out = null;
            BufferedReader br = null;
            try {
                //创建服务器端套接字:指定监听端口
                ServerSocket server = new ServerSocket(8888);
                //监听客户端的连接
                socket = server.accept();
                //获取socket的输入输出流接收和发送信息
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new BufferedWriter(new 
                                       OutputStreamWriter(socket.getOutputStream()));
                br = new BufferedReader(new InputStreamReader(System.in));
                while (true) {
                    //接收客户端发送的信息
                    String str = in.readLine();
                    System.out.println("客户端说:" + str);
                    String str2 = "";
                    //如果客户端发送的是“end”则终止连接 
                    if (str.equals("end")){
                        break;
                    }
                    //否则,发送反馈信息
                    str2 = br.readLine(); // 读到 为止,因此一定要输入换行符!
                    out.write(str2 + " ");
                    out.flush();
                }
            catch (IOException e) {
                e.printStackTrace();
            finally {
                //关闭资源
                if(in != null){
                    try {
                        in.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(out != null){
                    try {
                        out.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(br != null){
                    try {
                        br.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(socket != null){
                    try {
                        socket.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }




  • 相关阅读:
    【HDOJ6667】Roundgod and Milk Tea(模拟)
    【HDOJ6655】Just Repeat(贪心)
    【HDOJ6651】Final Exam(贪心)
    【HDOJ6646】A + B = C(模拟)
    【HDOJ6656】Kejin Player(期望DP)
    【2019 Multi-University Training Contest 7】
    【HDOJ6635】Nonsense Time(时间倒流,lis)
    【HDOJ6638】Snowy Smile(线段树)
    【HDOJ6641】TDL(数论)
    【HDOJ6645】Stay Real(堆)
  • 原文地址:https://www.cnblogs.com/timeboy/p/9464432.html
Copyright © 2020-2023  润新知