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();
}
}
}
2 番目のファイル
/*
* 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 キーを 2 回押す必要があります。サーバーをロードするとすぐに準備ができるように、BufferedReaderに新しい行の必要性をスキップさせるにはどうすればよいですか-
私が欲しいもの -
サーバーへようこそ。タイプAまたはBまたは何でも。A <-- ユーザー入力 YOU TYPED A!
何をしているのか - サーバーへようこそ。ユーザーはエンターを押さなければなりません ユーザーはエンターを押さなければなりません タイプ A または B または何でも。A<-- ユーザー入力 A と入力しました!
BufferedReader にユーザー入力をすぐに受け取る準備をさせるにはどうすればよいですか?