1

エコー サーバーを実行しようとすると、ソケットへのデータの読み取り/書き込みに失敗します。例外はスローされず、コンソール入力に対する応答もありません。コードの何が正しくないのですか?

public class Server {

    static ServerSocket server;

    public static void main(String[] args) throws IOException  {
        String hostname = "127.0.0.1";

        try{
            server = new ServerSocket(8888); 
          } catch (IOException e) {
            System.out.println("Could not listen on port 8888");
            System.exit(-1);
          }

        Socket theSocket = null;
        try {
            theSocket = new Socket(hostname, 8888);

            BufferedReader networkIn = new BufferedReader(new InputStreamReader(theSocket.getInputStream()));
            BufferedReader userIn = new BufferedReader(new InputStreamReader(System.in));
            PrintWriter out = new PrintWriter(theSocket.getOutputStream(), true);
            System.out.println("Connected to echo server");

            while (true) {
              String theLine = userIn.readLine();
              if (theLine.equals("."))
                break;
              out.println(theLine);
              out.flush();
              System.out.println("networkIn: "+networkIn.readLine());
            }
            networkIn.close();
            out.close();
            System.out.println("out.close();");
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}
4

2 に答える 2

3

1 つは接続を受け入れるため、もう 1 つは (ホスト名,8888) に接続するための 2 つの無関係なソケットを作成しました。accept()実際にクライアントを接続するには、サーバー ソケットを呼び出す必要があります。チュートリアルを参照してください。

于 2012-05-25T16:13:31.853 に答える
1

を追加することから始めSocket client = server.accept();ます。次に、プログラムの残りの部分をどのように再構築する必要があるかがわかります。

于 2012-05-25T16:16:37.050 に答える