2016-08-17 20 views
1

Android appからまでのデータをTCPに送信しようとしています。私はのPCからPCまでテストして正常に動作します。しかし、からPCにAndroidを送信しようとすると、Androidが停止しています。 PCソケットとアンドロイドソケットの間に違いはありますか?どのように解決できますか?PC経由でデータをアンドロイドに送信できません

サーバー

byte[] buffer = new byte[1000]; 

IPAddress ipAddress = IPAddress.Parse("XXX.XXX.XXX.XXX"); 
IPEndPoint localEndpoint = new IPEndPoint(ipAddress, 8080); 

Socket sock = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 


sock.Bind(localEndpoint); 
sock.Listen(5); 

Socket confd = sock.Accept(); 

while (true) { 
    string data = null; 
    int b = confd.Receive(buffer); 
    data += Encoding.ASCII.GetString(buffer, 0, b); 
    Console.WriteLine("" + data); 
} 

クライアント

IPAddress ipAddress = IPAddress.Parse("XXX.XXX.XXX.XXX"); 
IPEndPoint ipEndpoint = new IPEndPoint(ipAddress, 8080); 

Socket client = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 


try { 

    client.Connect(ipEndpoint); 
    string message = "What can i send for you?"; 
    byte[] sendmsg = Encoding.ASCII.GetBytes(message); 
    int n = client.Send(sendmsg); 
} 
catch (Exception e) { 
    Toast.MakeText(Application.Context, e.ToString(), ToastLength.Short).Show(); 
} 
+0

ネットワーク通信を扱う際には、まず基本を確認することをお勧めします。ファイアウォールまたはネットワークルーターがブロックされていないことを確認します。別のポートを試してみてください(8080はかなり一般的です)。別のIPアドレスを試してください。クライアントとサーバーでIPアドレスが正しいことを確認してください。あなたはPC - > PCを試してみましたが、これは同じPC上にあったのですか?同じ場合は異なる試してください。 –

+0

私はすべて、まだPC - > PCは動作していますが、Android - > PCはチェックしていません。 – Pareidolia

+0

ほとんどのルータは、Wi-Fiから有線(PC接続)ネットワークへのトラフィックを許可しません。それも動作することを確認してください。 BTW:IPアドレスはローカルアドレス(192.168.x.x/10.x.x.x)である必要があります。マスクする必要はありません。 – Robert

答えて

0

Androidの答えは本当にコメントで言われた合計します。

問題はプログラミング上の問題ではなく、ネットワーク構成上の問題であるようです。

何らかのネットワーク通信を行う際には、常に基本から始めて問題を試してみてください。

  1. トラフィックがブロックされていないことを確認します。
  2. ルータがトラフィックをブロックしていないことを確認します。
  3. 他のアプリで使用している可能性があるので、特にそれが 8080のような一般的なものである場合は、使用したポートを変更してください。
  4. ホスト名を使用して(ダイナミックアドレスを使用している場合)のIPアドレスを直接
  5. てみてくださいを使用して、IPアドレスを変更しようとした場合

PCやってたときに、これは働いていたとして - 同じホスト上> PCのテストを同じネットワーク上の2つの異なるPC間で同じテストを試してください。これは、ネットワークの問題であるかどうかを追跡するのに役立ちます。

この場合、モバイルネットワーク経由でアクセスしているように見えますが、自分のローカルIPアドレスではなくパブリックIPアドレスを使用する必要があります。これを見つけるにはhttps://www.whatismyip.com のような多くのサービスがあります。ルータ&ファイアウォールがローカルPCにトラフィックを通過させ、必要に応じてポートフォワーディングを行うようにしてください。

モバイルネットワークを経由しないようにするには、USB経由でPCに電話を接続してみてください。
このサイトでは、パソコンと携帯電話の両方をこのように設定するのに役立ちます:https://android.stackexchange.com/questions/73168/how-to-use-pcs-internet-on-android-phone-through-usb-cable

+0

ちょうどメモ:USB接続は必要ありません。ちょうど[ここ](http://stackoverflow.com/questions/23168152/use-netsh-wlan-set-hostednetwork-to-create-a-wifi-hotspot-and-the-authenti)としてあなたのPCからネットワークをホストしてください – Pareidolia

関連する問題