忙しい現代人の腰&肩のお悩み対策!

Tomcatで、HTMLファイルをwebappsディレクトリに作って、http://localhost8080/webapps/ファイル名.htmlというアドレスで表示しようとしたんですけど、HTTP404とエラー表示がされます。
http://localhost:8080にはアクセスできるんで、インストールは成功してると思うんですけど、何が原因なのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

#2です。


記載しましたが、まったく間違った情報でした。すみません。
webapps/ROOTがデフォルトルートなので、そこに入れないと、http://localhost:8080/ファイル名.htmlには出来なかったですね。。

http://localhost8080/webapps/ファイル名.html
とするためには、TomcatのServer.xmlファイルに
<Context path="/webapps" workDir="フルパスディレクトリ" />
とか記載しないといけないかもしれません。

そのディレクトリに、ファイル名.htmlを配置になります。 間違った情報を掲載してしまいまして申し訳有りません。
    • good
    • 1
この回答へのお礼

ありがとうございました。なんとか起動しました。

お礼日時:2006/06/10 11:07

webappsディレクトリ直下にファイル名.htmlを作成したのですよね?



それであれば、
http://localhost:8080/ファイル名.html
になると思います。
webappsがルート直下になっているはずです。
また、サーブレットを作成した時には、web.xmlの
編集が必要なはずですのでweb.xmlに記載してください。
html、jsp等は不要だったと・・・
    • good
    • 0

考えられる可能性1)


http://localhost8080/webapps/ファイル名.html
ではなく
http://localhost:8080/webapps/ファイル名.html
でアクセスするとうまくいく

考えられる可能性2)
web.xmlが間違っている

この回答への補足

可能性1)は':'のつけ忘れということですよね。試してみましたが、だめでした。ちなみに、Sservletで、classseにファイルを作ってコンパイルが通ったので、
http://localhost:8080/webapps/servlets-examples/ …ファイル名でアクセスしようとしたがやはり、HTMLのときと同じエラーが表示されます。可能性2)のほうは申し訳ありませんが意味がよくわかりませんでした。
関係あるかわかりませんが、localhost:8080のとこにある、Administration Toolのログインページにいこうとすると
'Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it.'
が表示されていけません。
何かわかりましたら、よろしくお願いします。

補足日時:2006/06/04 15:11
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QTomcatは起動しますが初期index画面が表示できません

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection refused
--------------------
Description: Connection refused
と表示されてしまいます。

下記に参考になるかわかりませんが、各種起動状態を記載いたします。アドバイスよろしくお願い申し上げます。

◆コマンドプロンプトで
>ping localhostと入力すると、
-----
Pinging yamamoto [127.0.0.1] with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
-----

と表示されます。また、
>telnet localhost 8080の場合は
-----
接続中: localhost...ホストへ接続できませんでした。 ポート番号 8080: 接続に失敗し
ました
-----
と表示されます。

お手数ですが、よろしくお願い申し上げます。

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection re...続きを読む

Aベストアンサー

>Tomcatは起動しますが
とのことですが、Tomcatが起動していないと思います。

pingが通るのはTomcatと無関係で、PCが立ち上がっていれば帰ってくると思います。

telnet localhost 8080
で接続できないとのことなので、Tomcatが起動できていないのではないでしょうか?

Qeclipseとtomcatで404エラー

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いていたtomcatを終了させて、eclipseの上部にあるtomcatのアイコンをクリックし、その後、通常のブラウザで表示させようとすると404エラーが出てしまいます。(http://localhost:8080/Test/test.jsp)

そもそも右クリック→実行の際に起動するtomcatとeclipse上部にアイコンで存在するtomcatはどう違うのでしょうか?

そしてどうすれば、上部のtomcat起動からブラウザで直接JSPを呼び出すことが出来るのでしょうか?

申し訳ありませんが、ご教授お願い致します。

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いてい...続きを読む

Aベストアンサー

EclipseからTomcatを起動した場合、プロジェクトに生成されたWebアプリケーションのディレクトリをTomcatの公開ディレクトリに強制的に変更しています。普通に起動すると、プロジェクトのディレクトリはTomcatの公開ディレクトリにはなっていませんから表示は出来ません。

通常、Eclipseで作成したWebアプリケーションは、WARファイル(Webアーカイブ)として書き出し、それをデプロイします。Eclipseの「エクスポート」メニューでWARファイルを作成し、そのファイルをTomcatの「webapp」フォルダに入れてください。これで公開できるはずです。

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404

Qeclipse servlet 404対処方法

初めて質問させて頂く者です。宜しくお願いします。Java初心者です。
eclipse4.3のtomcatプロジェクトを使い、以下のServletコードを作成しました。
ブラウザアドレスバーに以下アドレスを入れて実行しましたが、HTTPステータス404が表示されます。
どのように改善したら良いかアドバイスをお願い致します。長文申し訳ございません。本当に困っています。

環境:windows8.1 eclipse4.3
ディレクトリ:jwapp(プロジェクト名)
-test(パッケージ名)
-First(ファイル名)
指定アドレス:localhost:8080/jwapp/servlet/test.First

web.xmlファイルはWEB-INFの中に置いています。
記述は以下のとおりです。↓

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
version="2.5"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">
<servlet>
<servlet-name>first</servlet-name>
<servlet-class>test.First</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
</web-app>

Servletのコードは以下のとおりです。↓

package test;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class First01 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws IOException,ServletException{
res.setContentType("text/html;charset=Shift_JIS");
PrintWriter out=res.getWriter();
out.println("<html)");
out.println("<head>");
out.println("<title>テスト</title>");
out.println("<h1>テスト</h1>");
out.println("</body>");
out.println("</heml>");
}
}

初めて質問させて頂く者です。宜しくお願いします。Java初心者です。
eclipse4.3のtomcatプロジェクトを使い、以下のServletコードを作成しました。
ブラウザアドレスバーに以下アドレスを入れて実行しましたが、HTTPステータス404が表示されます。
どのように改善したら良いかアドバイスをお願い致します。長文申し訳ございません。本当に困っています。

環境:windows8.1 eclipse4.3
ディレクトリ:jwapp(プロジェクト名)
-test(パッケージ名)
-First(ファイル名...続きを読む

Aベストアンサー

publicクラス名は、ファイル名と同じにします。
web.xmlのur-pattern要素が/firstならば、urlは下記になります。

http://localhost:8080/jwapp/first

QEclipseでのJDBCドライバについて

Eclipse3.1でデータベース(mysql)にアクセスするプログラムを作ったのですが下記のエラーが出ます。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

これはJDBCドライバのセットアップがうまく出来ていないからなのでしょうか?
またEclipseでは、~.jarというファイルをプロジェクトのWEB-INFのlibフォルダに入れれば使える印象があるのですが、参考書(EclipseのではなくJAVAなどの)などにあるようにTomcatのインストールフォルダ以下common/libに入れて環境変数を変更しないといけないのでしょうか?

ご存知の方教えてください、よろしくお願いします。

Aベストアンサー

WEB-INF以下に入れると実行はできるのですが、エクリプスが.javaファイルをコンパイルすることができません。projectの一覧を右クリックしてpropertyを選択し、ダイアログ右側からJava Build Pathを選択し、タグからLibrariesを選び、Add JARsボタンをおして.jarファイルを登録して下さい。
たぶんこれでコンパイルできるはずです。

Qservletからjspへオブジェクトの配列情報を送る方法

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、各情報をsetする。
HttpServletRequestにsetAttributeでFileInfomation情報を付加し、
disp.jspへforwardする。

※以下の方法を考えています。
request.setAttribute("fileinfo1", fileinfo[0]);
request.setAttribute("fileinfo2", fileinfo[1]);
request.setAttribute("fileinfo3", fileinfo[2]);
・・・
(配列でsetAttributeできるのかわからなかったので、
 とにかくファイルの数分setAttributeしてみました)

getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res)

わからないこと:
disp.jspでどのようにFileInfomationの情報を取得し、
内容を参照できるのかがよくわからないのです。
jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、
返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね?

突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。
オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、
それもご教授いただけますでしょうか。
よろしくお願いいたします。jsp難しいです・・・。

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、...続きを読む

Aベストアンサー

setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。
今回の場合は、getAttributeメソッドですね。
戻り値はObjectですがこれはキャストすれば良いのです。
FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1");
てな具合です。

なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。

さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。
サーブレット側で、
request.setAttribute("キー文字列", fileinfo);
として、JSP側で、
FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列");
とすれば、良いのです。

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング