Java检查套接字是否发送

时间:2015-06-16 19:35:44

标签: java sockets

我正在创建一个简单的Java程序,客户端向服务器发送消息,服务器回复确认消息。但我的问题是:我可以在BufferedReader行之前获得服务器响应/广播吗?

服务器:

public class Multithread extends Thread{
    Socket sock;
    static ArrayList<Multithread> clientList = new ArrayList<Multithread>();
    public Multithread(Socket sock){
        this.sock = sock;
    }
    public void run(){
        try{

            DataInputStream in = new DataInputStream(this.sock.getInputStream());
            String read = in.readUTF();
            if(read.equalsIgnoreCase("exit")){
                System.out.println(this.sock.getRemoteSocketAddress()+" just dced");
                clientList.remove(this);
                this.sock.close();
            }
            else{
            String said = this.sock.getRemoteSocketAddress() +" said "+read;
            System.out.println(said);
            for(Multithread multi : clientList){
                DataOutputStream o = new DataOutputStream(multi.sock.getOutputStream());
                o.writeUTF(said);
            }
            this.sock.close();}
        }catch(IOException e){

        }
    }
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(7777);
        System.out.println("Listening");
        while(true){
            Socket socket = serverSocket.accept();
            System.out.println("Connected to "+socket.getRemoteSocketAddress());
            Multithread multi = new Multithread(socket);
            clientList.add(multi);
            multi.start();

        }
    }
}

客户端:

public class Clients{
    public static void main(String[] args) throws UnknownHostException, IOException {

        while(true){
            Socket socket = new Socket("localhost",7777);
            DataInputStream in = new DataInputStream(socket.getInputStream());
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String line = br.readLine();
            out.writeUTF(line);
            if(line.equalsIgnoreCase("exit"))
            {
                System.out.println("Disconnected");
                socket.close();
                break;
            }
            else{
                System.out.println("Server said :"+in.readUTF());
                socket.close();
            }

        }
    }
}

0 个答案:

没有答案