这是客户端的代码
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();
}
}
在客户端连接服务器时,客户端连接不上服务端,这是为什么???