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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Q&A

解決済

1回答

3868閲覧

Javaのsocketを使った通信について

dttornado

総合スコア20

Java

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

1グッド

0クリップ

投稿2016/06/28 08:14

socket.connect(new InetSocketAddress(ttf.getText(),port));
でソケットをサーバソケットにつなぐとき、ttf(IPアドレスを入力するテキストフィールド)に
入力するサーバのIPアドレスについては、
InetAddress.getLocalHost()やsocket.getInetAddress()で得られるものと
コントロールパネルのシステムで表示されるIPv4が一致しないのですがどっちが正しいですか?

同じパソコン内なら得られた方でクライアントからサーバに接続できるんですが
違うパソコンのクライアント側からサーバに接続しようとするととどっちもできないです(タイムアウトになります)
WiFiは全て同じです

tignear👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tignear

2016/06/28 08:30 編集

どのようなネットワーク構成なのか書いてください
dttornado

2016/06/28 08:45

返信ありがとうございます 家の一般家庭用のWiFiに私と母のPC,家族のスマートフォン、ゲーム機などが繋がっています。私のPCの中ではクライントアプリとサーバアプリを同時に実行しクライアントからサーバに接続できたのですが、母のPCを借りて母のPCの中のクライアントアプリから私のPCのサーバアプリに接続しようとすると10秒ほど接続を試みたのちタイムアウトになります(タイムアウトは設定はしていないのでデフォルトのだと思います) 基本作動中のサーバにクライアントアプリが複数接続し、サーバを通してメッセージをやり取りするチャットアプリを作ろうとしています
tignear

2016/06/28 09:38

ここにきてで申し訳ないけどソースコードもお願いします
guest

回答1

0

ベストアンサー

dttornadoさんのPCのIPアドレス
確認方法
Windows
Mac
Linux
わからなければOSの名前を教えてくれれば細かく説明します
serverサイドもJavaならこんな方法もあります

java

1System.out.println(InetAddress.getLocalHost().getHostAddress());

サーバーサイドにこれを書いてここの値をクライアント側に入力してください

投稿2016/06/28 08:31

編集2016/06/28 09:07
tignear

総合スコア260

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dttornado

2016/06/28 08:48

その場合、外部の環境のクライアントから接続することは可能ですか? 最終的には友達と簡単なチャットをしたいです。
tignear

2016/06/28 09:09 編集

無理です 内部からの接続と外部からの接続は使用するIPアドレスが違います 内部からはプライベートIPアドレス 外部からはグローバルIPアドレスを使用します グローバルIPアドレスはルーターの設定画面から確認できます (環境によってはプロパイダなどを変えないとできないこともあります)
tignear

2016/06/28 09:08

あとファイアウォールとセキュリティ対策ソフトを一時的に無効にして試してみてください (ウイルスバスターとかWindowsfirewallとか)
dttornado

2016/06/28 09:13

そうなんですね、ありがとうございます 早速調べて母のPCからそのアドレスに接続しようとしたところrefusedされました。 同じWiFi環境の中ではグローバルIPアドレスは使えないのですか ローカルIPアドレスを入れても接続できなかったのですが... もしかしてグローバルIPアドレスからポート番号とは別に個々の機器を認識する必要があるのでしょうか
tignear

2016/06/28 09:31

うーん・・ ちゃんとrecieve()で待機してるんだよね? 手持ちの情報じゃわからないからOSと使っているセキュリティーソフトを教えてほしいです
dttornado

2016/06/28 09:31

ファイアーウォールとセキュリティソフトは両方とも一時無効にしましたが接続できませんでした
tignear

2016/06/28 09:35 編集

あとクライアント側に入力しているipアドレス宛(サーバ側ip)にpingを送ってみてください 返事がないとかはないと思うけど・・
dttornado

2016/06/28 09:33

サーバはaccept()を使ってます OSは64bitのwindows10、セキュリティソフトは科スペルスキーです
dttornado

2016/06/28 09:45

私と母それぞれのPCから双方にホスト名、ローカルIP、グローバルIPアドレス宛にpingを打ちました 結果は、どちらのPCからでもホスト名とローカルIPはタイムアウトになり、グローバルIPアドレスは正常に帰ってきました
tignear

2016/06/28 09:50 編集

え・・ローカルIPから帰ってこない? グローバルIPとローカルIPを教えてください
dttornado

2016/06/28 10:04

グローバル:118.241.223.104 私のローカル:192.168.56.1 母のローカル:192.128.1.6 です やっぱりウィルスソフトがrefuseしてるんですかね
tignear

2016/06/28 10:11

接続できないわけです・・ 母のPCとあなたのPCのIPアドレスの3番目での数値が違うんですが 確認してほしいこと デフォルトゲートウェイを2台ともで確認してください
tignear

2016/06/28 10:13

あとサブネットマスクもお願いします
dttornado

2016/06/28 10:22

デフォルトゲートウェイとサブネットマスクはどちらも同じでした ただ、問題がありまして、それらを確認したコントロールパネルのネットワーク接続の表示の欄では私のPCのローカルIPアドレスは192.168.1.7となっておりJavaのプログラムで入手できるLocalHostAddressやInetAddressの値と違うんです(先ほどの私のIPアドレスがそれらを使って取得したものです)
tignear

2016/06/28 10:27

間違いなく原因が分かった ServerSocket s=new ServerSocket(); s.bind(new InetSocketAddress("192.168.1.7",port)); にserver側を変更してみてください
tignear

2016/06/28 10:50

原因は違うIPアドレスにServerSocketがbindされてしまったことです・・
dttornado

2016/06/28 10:50

返信遅くなってごめんなさい! できました!つながりました! 今日の午後ずっとこれで悩んでたのですごく感動です ありがとうございました!
tignear

2016/06/28 10:54

あとでローカルIP(プライベートIP)を固定しとくといいよ
dttornado

2016/06/28 10:54

なるほどですね... 最後にもう一つだけお聞きしたいのですが、グローバルIPがrefusedされるのはやはりファイヤーウォールやウィルス対策ソフトが原因なのでしょうか...
tignear

2016/06/28 10:57 編集

それはインターネットの仕様でグローバルでは発信元のIPには通信は帰ってこれない だから友人に協力してもらうといいよ
dttornado

2016/06/28 11:04

ありがとうございます
tignear

2016/06/28 11:06

いや楽しかったです こちらこそ必要ないことが結構あったりしてすいませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問