package sample_server;
import java.io.*;
import java.net.*;
import java.security.*;
/**
* Title: Sample Server
* Description: A simple telnet server
* @author A. Jones
* @version 0.01
*/
public class Sample_server {
private static int port=4444, maxConnections=0;
// Listen for incoming connections and handle them
public static void main(String[] args) {
int i=0;
try{
ServerSocket listener = new ServerSocket(port);
Socket server;
while((i++ < maxConnections) || (maxConnections == 0)){
doComms connection;
server = listener.accept();
doComms conn_c= new doComms(server);
Thread t = new Thread(conn_c);
t.start();
}
} catch (IOException ioe) {
System.out.println("IOException on socket listen: " + ioe);
ioe.printStackTrace();
}
}
}
class doComms implements Runnable {
private Socket server;
doComms(Socket server) {
this.server=server;
}
public void run () {
try {
// Get input from the client
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintStream out = new PrintStream(server.getOutputStream());
System.out.println("A user has connected to the server.");
out.println("You have connected.");
MenuSystemClass newMenu = new MenuSystemClass(in, out);
newMenu.MainMenu(server);
} catch (IOException ioe) {
System.out.println("IOException on socket listen: " + ioe);
ioe.printStackTrace();
}
}
}
第二个文件
/*
* Menu System Class
* Simple to use menu
*/
package sample_server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;
/**
* My Custom Menu Class
* @author aaron
*/
public class MenuSystemClass {
private BufferedReader input = null;
private PrintStream output = null;
MenuSystemClass(java.io.BufferedReader in, PrintStream out) {
input = in;
output = out;
}
public void MainMenu(java.net.Socket server) throws IOException {
// Set Run Boolean to true
boolean running = true;
// We switch the input to lowecase here and compare
while(running) {
output.println("A: Stuff ; V: Things ; W: More Stuff; S: Also Stuff ; D: Delete ; Q: Quit");
// Initialize the scanner
Scanner user_input = new Scanner(input);
// Get the user input
String decision = user_input.next();
// Conver their decision to lowercase and compare to choices.
switch (decision.toLowerCase()) {
case "a":
output.println("This is not yet implemented.");
break;
case "s":
output.println("This is not yet implemented.");
break;
case "d":
output.println("This is not yet implemented.");
break;
case "v":
output.println("This is not yet implemented.");
break;
case "w":
output.println("This is not yet implemented.");
break;
case "q":
server.close();
System.out.println("A connection has been terminated by the client.");
return;
default:
output.println("You did not select a viable option.");
output.println("Try again.");
break;
}
}
}
}
我正在尝试制作一个 telnet 服务器。您可以连接到服务器,但是当您这样做时;它要求您在开始正确接受输入之前按两次 enter 键。我如何强制 BufferedReader 跳过新行的必要性,以便在加载服务器后立即准备就绪 -
我想要的是 -
欢迎来到服务器。键入 A 或 B 或其他类型。A <-- 用户输入您输入了 A!
它在做什么 - 欢迎来到服务器。用户必须按 Enter 用户必须按 Enter 类型 A 或 B 或其他。A<-- 用户输入 您输入了 A!
如何让 BufferedReader 准备好立即接受用户输入?