使用socket建立长连接

服务端代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
 
public class MyServerBin {
 
    public static void main(String[] args) {
        MyServerBin myServerBin=new MyServerBin();
        myServerBin.startAction();
    }
    
    public void startAction(){
        ServerSocket serverSocket=null;
        try {
            serverSocket=new ServerSocket(1234);
            while(true){
                Socket socket=serverSocket.accept();
                new Thread(new MyRuns(socket)).start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (serverSocket!=null) {
                    serverSocket.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    }
    
    class MyRuns implements Runnable{
        
        Socket socket;
        BufferedReader reader;
        BufferedWriter writer;
 
        public MyRuns(Socket socket) {
            super();
            this.socket = socket;
        }
 
        @Override
        public void run() {
            try {
                reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                String lineString="";
                while( !(lineString=reader.readLine()).equals("bye") ){
                    System.out.println("客户端:"+socket.hashCode()+"==="+lineString);
                    writer.write("服务器返回:"+lineString+"\n");
                    writer.flush();
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (reader!=null) {
                        reader.close();
                    }
                    if (writer!=null) {
                        writer.close();
                    }
                    if (socket!=null) {
                        socket.close();
                    }
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
        }
        
    }
    
}

客户端代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
 
public class MyClickBin {
 
    public static void main(String[] args) {
        MyClickBin myClickBin=new MyClickBin();
        myClickBin.startAction();
    }
    
    void readSocketInfo(BufferedReader reader){
        new Thread(new MyRuns(reader)).start();
    }
    
    class MyRuns implements Runnable{
        
        BufferedReader reader;
        
        public MyRuns(BufferedReader reader) {
            super();
            this.reader = reader;
        }
 
        @Override
        public void run() {
            try {
                String lineString="";
                while( (lineString = reader.readLine())!=null ){
                    System.out.println(lineString);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
    }
    
    public void startAction(){
        Socket socket=null;
        BufferedReader reader=null;
        BufferedWriter writer=null;
        BufferedReader reader2=null;
        try {
            socket=new Socket("127.0.0.1", 1234);
            reader = new BufferedReader(new InputStreamReader(System.in));
            reader2=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            readSocketInfo(reader2);
            String lineString="";
            while(!(lineString=reader.readLine()).equals("exit")){
                writer.write(lineString+"\n");
                writer.flush();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader!=null) {
                    reader.close();
                }
                if (writer!=null) {
                    writer.close();
                }
                if (socket!=null) {
                    socket.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/xy8199/article/details/81316591