2017-01-30 27 views
0

私はいくつかの同様の単純なJavaサーバーとクライアントを作成しました。私がEclipseから実行したり、同じコンピュータから私が言うことができる限り、それらはうまく動作します。Javaソケットが接続を受けない

クライアントプログラムを他のコンピュータに送信すると、バインドできません。

また、私はiOS用のSwiftアプリを作って電話からサーバーにアクセスしようとしましたが、役に立たなかった。

これは私のサンプルコードです。これは裸の骨ですが、それでも動作しません。ファイアウォールに問題がありますか?私はMacBookPro 2010、OS Sierra 10.12 betaを実行しています。 Eclipseはファイアウォールで検証されます。

public class BasicServer { 

    public static void main(String[] args) { 

     ServerSocket sam = null; 
     Socket bob = null; 
     try { 
      sam = new ServerSocket(1025); 
      System.out.println("Server is Cheking acceptance"); 
      bob = sam.accept(); 
      if (bob != null) { 
       System.out.println("\nSystem Accepted"); 
      } 
      System.out.println("\nClosing Server..."); 
     } catch (Exception e) { 
      System.out.println("Error on server side of type: " + e.getMessage()); 

     } finally { 
      try { 
      sam.close(); 
      bob.close(); 
      } catch (Exception e) { 
       System.out.println("Socket on Finally had encountered an Error:" + e.getLocalizedMessage()); 
      } 
     } 
    } 
} 

これは、Eclipse

public class TransServer { 

    public static void main(String[] args) { 
     System.out.println("Action Done"); 


     try { 

      Socket sam = new Socket("some IPv6", 1025); 
      System.out.println("Done..."); 
      if (sam.isConnected()) { 
       System.out.print("Connected!"); 
      } 

      sam.close(); 

     } catch (IOException e) { 
      System.out.println("Error Occoured: " + e); 
     } 

    } 

} 

から動作し、これはSWIFTコードです:

class ViewController: UIViewController { 

    private let serverIP = "some IPv6" 

    @IBOutlet weak var textOutlet: UITextView! 

    @IBAction func connectAction(_ sender: UIButton) { 
     // textOutlet.title = "" 
     connectToServer() 
    } 

    private func connectToServer() { 
     let mySocket = TCPClient(address: serverIP, port: 1025) 

     let connectResult = mySocket.connect(timeout: 2) 

     switch connectResult { 
     case .failure(let e): 
      textOutlet.text = "We received an error: \(e.localizedDescription)" 
     case .success: 
      textOutlet.text = "We have successfuly established a Connection to server!" 
     } 

     mySocket.close() 

     textOutlet.text.append("\nWe have closed the Socket") 

    } 

} 

任意のアイデア?

ありがとうございます。

+0

'serverIP'はどうやって見つかりますか?コンピュータ/デバイスは同じネットワーク上になければなりません。 MacOSでは、ネットワーク環境設定でIPを見つけることができます... –

+0

私はGoogleに入力すると、 "my ip"のように表示されます...私は異なるデバイスと異なるIPの両方からサーバーにアクセスしたい...異なった州の私の友人がサーバーに要求を送ることができるはずです... –

答えて

0

Googleや他のWebサービスから悪いIPアドレスを取得していたという問題がありました。ネットワークのプロパティを見たとき、私は実際のアドレスを見つけました。私はそれを使用したとき、すべて正常に動作しました...

+0

ネットワーク環境設定に表示されるIPは、あなたが「私的な」IPアドレスです。同じネットワーク内のデバイスでのみ使用できます。 Googleに表示されるIPは「公開」IPです。たとえば、別の大陸の友人がサーバーにアクセスできるようにするには、このIPアドレスが必要です。パブリックIPはデフォルトでプライベートIPにマッピングされません。それを行うためにネットワークアドレス変換(NAT)を設定する必要があります。 –

関連する問題