2016-12-09 7 views
-1

ソケットに接続し、接続されているかどうかを確認しようとしています。私の問題は、私のソケットが接続しているが、私はそれが尋ねられるとき、それはnullを返します。ソケットがisConnected()を実行しているときにnullを返す

package main; 

import java.io.IOException; 
import java.net.Socket; 

public class getIrcConnection { 

    String Server = "tmi.twitch.tv"; 
    int Port = 80; 

    declars declars = new declars(); 

    public getIrcConnection() throws IOException{ 

    this.declars.socket = new Socket(Server, Port); 

    } 

} 
私のソケットが格納されている

package main; 

import java.net.Socket; 

public class declars { 

    Socket socket; 

} 

私は接続をチェックしてる方法:

package main; 


public class checkIrcConnection { 

    declars declars = new declars(); 

    public checkIrcConnection() { 

     if (this.declars.socket.isConnected()) {   
     System.out.println("Connected");  
     } 

     } 

} 

このすべてを、私は私の接続を取得していますどのように

メインメソッドで実行される。

package main; 

public class Main { 

    public static void main(String[] args) throws Exception { 

     getIrcConnection gic = new getIrcConnection(); 

     checkIrcConnection cic = new checkIrcConnection(); 

    } 

} 
+1

を参照することができますあなたのクラスと通常の関数がどうあるべきか実装し、コンストラクタでの実装を入れている表示されます。それは少し珍しいことです。 – selbie

+0

'Socket'は* '* nullを返す'ではありません。あなたの*コード*は 'Socket.isConnected()'を呼び出すときに* NullPointerExceptionを投げています、明らかにヌルの 'Socket'変数です。あなたが正しくエラーを見て、あなた自身に誤って記述していないなら、あなたは質問を投稿する必要はありませんでした。 – EJP

答えて

1

2つのdeclarsオブジェクトがあります。 1つはgic.declars、もう1つはcic.declarsです。私。あなたが設定していないものを使用しています。

デバッガからわかりやすい単純な混乱があるので、デバッガのコードをステップ実行することをお勧めします。

0

まず、オブジェクト指向の方法でコードを整理します。クラスをオブジェクトとみなし、これらのオブジェクトは共通の属性と共通の操作を持たなければなりません。すべての機能をオブジェクトに配布するよりも。これを行うと、エラーをデバッグして理解するのがずっと簡単になります。

URLにhttpリクエストを行い、返された結果を処理したい場合は、いくつかのライブラリを使用するとよいでしょう。たとえば、あなたはunirest

を使用するかは、Javaでソケットプログラミングを行使したい場合、あなたはjava tutorial about sockets

関連する問題