1

まず、ここで質問に答えてくれた皆さんに感謝します。私はこのフォーラムを Java バイブルとして使用しました。これは宿題で、課題は次のとおりです。

ソケットを使用してポート 80 の Web サーバーに接続し、HTTP プロトコルの GET を使用して Web ページを要求し、結果の HTML を表示するプログラムを Java で作成します。

私がこれを正しく行っているかどうかはわかりません。私はJavaについて非常に限られた理解しか持っていません。これのほとんどは、私が経験したチュートリアルからのものです。ウェブサイトへのリンクは大歓迎です。

これが私のエラーメッセージです:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
Type mismatch: cannot convert from java.net.Socket to Socket
The method getInputStream() is undefined for the type Socket

これが私のコードです:

import java.io.*;
import java.net.*;
public class Server
{

    public static void main(String[] args) throws Exception
    {
        Server SERVER = new Server();
        SERVER.run();
    }

    public void run() throws Exception
    {
        ServerSocket one = new ServerSocket(80);

        //these are the two lines of code it is warning about

        Socket myskt = one.accept();
        InputStreamReader IR = new InputStreamReader(myskt.getInputStream());

        //end of warnings

        BufferedReader BR = new BufferedReader(IR);

        String message = BR.readLine();
        System.out.println(message);

        if (message != null)
        {
            PrintStream PS = new PrintStream(System.out);
            PS.println("Message Received");
        }

        URL website = new URL("www.dogs.com");
        URLConnection yc = website.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
        yc.getInputStream()));
        String inputLine;
        while ((inputLine = in .readLine()) != null)
        System.out.println(inputLine);

        one.close();
    }
    // TODO Auto-generated method stub
}
4

1 に答える 1

3

問題は、コードの形式が正しくないことです。コンパイル エラーが発生します。私の推測では、Socketコンパイルしているクラスと同じパッケージにクラスがあるか、クラスパスに残りのクラス ファイル (Socket.class) があると思います。コンパイラが実行されると、パッケージ ローカル バージョンの Socket が使用されます。これは Socket と同じタイプではないjava.net.Socketため、例外が発生します。

これを解決するには、宣言時に完全修飾名 java.net.Socket を使用します。myskt

于 2013-01-29T04:31:36.190 に答える