質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Java

    14153questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • TCP

    167questions

    TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

  • Network+

    45questions

    Network+とは、IT業界団体CompTIA認定のネットワーク技術に関する知識を証明する資格です。ネットワーク技術者として、実務で必要なネットワークセキュリティ・ネットワークアーキテクチャなどの知識を取得している証明となります。

Java: ネットワークプログラミング ローカルサーバー

受付中

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 824

Ezerk

score 4

前提・実現したいこと

Javaによるネットワークプログラミングの練習コードを書いています。
Server side , client side 双方にsocketを設定したつもりなのですが以下のエラーが出ています。
localhostでサーバーが起動されていないことが原因のようですがどのように解決すればよいかアドバイスいただけたらと思います。

発生している問題・エラーメッセージ

```
エラーメッセージ
java.net.ConnectException: Connection refused

該当のソースコード

Java
Server side
ServerSocket serverSocket = new ServerSocket(8000);

Client side
Socket socket = new Socket("localhost", 8000);

試したこと

  • 他のport番号を試行
  • IP addressによる試行
    いずれも同じエラーがでています

補足情報(言語/FW/ツール等のバージョンなど)

Eclipse

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • coco_bauer

    2016/04/25 13:26

    "localhost"の代わりに"127.0.0.1"とすると、どうなりますか? もしも"127.0.0.1"で接続できるのなら、Ip6関連の設定が原因かもしれません。

    キャンセル

  • Ezerk

    2016/04/25 13:34

    ご回答ありがとうございます。 127.0.0.1で結果はかわらず同様のエラーが出ています。

    キャンセル

回答 2

0

ServerSocket#accept() (Java Platform SE 6)

このソケットに対する接続要求を待機し、それを受け取ります。このメソッドは接続が行われるまでブロックされます。

このメソッドを呼ばないと接続待機になりません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/25 13:21

    Socket socket = serverSocket.accept();
    コードが足りていませんでした。accpet()は書いています。

    キャンセル

0

直接的な解決策ではありませんが、SOCKETエラーの意味についてのアドバイスです。

エラーメッセージ 
java.net.ConnectException: Connection refused

とのことですが、この Connection refused は、サーバー側で 8000 番のポート番号でLISTEN状態の TCP ソケットが存在していないことを示しています。
サーバー側は serverScoket.accept() でクライアントからの接続があるまでブロックするはずなので、その状態(サーバーアプリのみ起動し、クライアントアプリは実行しない状態)のままサーバー側で "netstat -ln" を実行し、"Proto" が "tcp"、"Local Address" が "0.0.0.0:8000" かつ "State" が LISTEN になっているソケットが存在しているかどうか確認されることをお勧めします。
アプリの他の部分が見えないので断定はできませんが、serverSocket.accept() まで処理が進んでいない可能性があるのではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Javaにおいてのクライアントとサーバー間での通信について

    Javaのポートについてご質問します。 クライアントとサーバーにおいて、どのポートで通信されたという情報を受取るにはどうすればよろしいでしょうか?   また、ポート間での通信を行う

  • 解決済

    暗証番号入力のプログラム

    初めてこのサイトを利用するのとjava初心者なので、もし至らない点があればご指摘ください。 暗証番号をキーボードから入力し、正しければ「暗証番号が確認できました」間違っていれば「

  • 解決済

    サーバー管理ツール「Ajenti」のインストール方法について教えて下さい。

    AjentiをCentOS7にインストールしたいのですがうまく設定できず...困ってます。 http://ajenti.org/ 使用したコマンドなど。 ○ Ajentiのイ

  • 解決済

    Node.jsでサーバーから任意のタイミングで通知を送りたい

    socket.ioを使ってチャットルームのようなものを作っているのですが、 (ここに書かれているような感じです: http://d.hatena.ne.jp/hekyou/201

  • 受付中

    Javaの勉強について

    未経験の中途採用として、IT企業に入社する予定です。 (おそらくwebアプリケーション開発にかかわると思います) 最初の3か月間はJavaの研修をするのですが、研修する前に自分

  • 解決済

    日付の比較

    あと一歩だと思うのですが、いいアイデアが思いつきません。 知恵を貸していただけると嬉しいです。 先日『入力した日付を比較して結果を返す』というプログラムを作成したいと 質

  • 解決済

    javaでのTCP/IP通信について

    前提・実現したいこと javaでTCP/IPを使って通信するためのプログラムを作りたいです 受信する側(サーバー側?)のプログラムは一応接続待ちになるところまでは動かせたの

  • 受付中

    JAVA connection timed out

    javaにおいて障害が発生しているサーバに接続を試みると エラーとしてconnection timed outが発生します。 このconnection timed outの

同じタグがついた質問を見る

  • Java

    14153questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • TCP

    167questions

    TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

  • Network+

    45questions

    Network+とは、IT業界団体CompTIA認定のネットワーク技術に関する知識を証明する資格です。ネットワーク技術者として、実務で必要なネットワークセキュリティ・ネットワークアーキテクチャなどの知識を取得している証明となります。