客户端连接服务端(JAVA)

这是客户端的代码

package Client;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;

public class client {
    private static final BufferedReader KEYBOARD_INPUT = new BufferedReader(
            new InputStreamReader(System.in));
    public static String getString(String prompt) throws Exception {
        System.out.print(prompt);
        String str = KEYBOARD_INPUT.readLine();
        return str;
    }
    public static void main(String args[]) throws Exception {
        Socket client = new Socket("47.96.154.95", 9999);
        Scanner scan = new Scanner(client.getInputStream());
        scan.useDelimiter("\n");
        PrintStream out = new PrintStream(client.getOutputStream());
        boolean flag = true;
        while (flag) {
            String input = getString("请输入:").trim();
            out.println(input);
            if (scan.hasNext()) {
                System.out.println(scan.next());
            }
            if ("stop".equalsIgnoreCase(input)) {
                flag = false;
            }
        }
        scan.close();
        out.close();
        client.close();
    }
}

这是服务器的代码 (内网IP:172.26.40.160,公网IP:47.96.154.95;防火墙开放了9999端口)

package program_1;

import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {
    public static class ClientThread implements Runnable {
        private Socket client = null;
        private Scanner scan = null;
        private PrintStream out = null;
        private boolean flag = true;
        public ClientThread(Socket client) throws Exception {
            this.client = client;
            this.scan = new Scanner(client.getInputStream());
            this.scan.useDelimiter("\n");
            this.out = new PrintStream(client.getOutputStream());
        }
        @Override 
        public void run() {
            while (this.flag) {
                if (scan.hasNext()) {
                    String val = scan.next().trim();
                    if ("stop".equalsIgnoreCase(val)) {
                        out.println("stoping...");
                        this.flag = false;
                    } else {
                        out.println("[ECHO]" + val);
                    }
                }
            }
            try {
                scan.close();
                out.close();
                client.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String args[]) throws Exception {
        ServerSocket server = new ServerSocket(9999);
        System.out.println("wait for the client connect...");
        boolean flag = true;
        while (flag) {
            Socket client = server.accept();
            new Thread(new ClientThread(client)).start();
        }
        server.close();
    }
}

在客户端连接服务器时,客户端连接不上服务端,这是为什么???

检查下服务器安全组是否开放了9999端口

先用网络工具检查下 互通性。 你从服务端 跟 客户端分别 telnet 下,看看。