2016-09-08 7 views
0

私はC#のTCPサーバーとC#のTCPクライアントを持っていますが、現在はAndroidでもTCPクライアントが必要です。ソケットなしのAndroidでTCPクライアントを使用するには?

私が見つけたすべての例はソケットに関連していますが、私は単純なTCPクライアントを使っていますので、動作しません。

は今の私のC#のTCPクライアントはそのようなものです:アンドロイドでこの機能の対応

TcpClient client = new TcpClient("127.0.0.1", 1200); 
     NetworkStream n = client.GetStream(); 
     Console.WriteLine("Insert name"); 
     string name= Console.ReadLine(); 
     byte[] message = Encoding.Unicode.GetBytes(name); 
     n.Write(message, 0, message.Length); 

はありますか?

これは私がしようとしている実際のAndroidクライアントであり、それは

InetAddress serverAddr = InetAddress.getByName("127.0.0.1"); 

     socket = new Socket(serverAddr, 1200); 
     EditText et = (EditText) findViewById(R.id.EditText01); 
     String str = et.getText().toString(); 
     PrintWriter out = new PrintWriter(new BufferedWriter(
       new OutputStreamWriter(socket.getOutputStream())), 
       true); 
     out.println(str); 
+0

「TcpClient」にソケットがあります。だから、Androidのソケットを使用してください – AhmadWabbi

+0

私は試して、接続が動作しません。だから私はあなたのサーバーがソケットとして動作するように設定されていない場合は、ソケットを送信することはできませんちょうどtcpclientとして – Alessandro

+0

TcpClientとソケットの間に違いはありません。それは別の理由でうまくいかなかった。 – AhmadWabbi

答えて

0

まず動作しない、この行:

InetAddress serverAddr = InetAddress.getByName(127.0.0.1); 

に構文エラーが含まれています。それは次のようになります。

InetAddress serverAddr = InetAddress.getByName("127.0.0.1"); 

第二に、アドレス「127.0.0.1」は、クライアントを実行し、「同じマシン」を指します。 C#プログラムの場合、サーバーはクライアントと同じマシン上で実行されるため、機能しました。しかし、Androidの場合は、あなたのAndroidの携帯電話である "同じマシン"で動作するサーバーはありません(エミュレートされた場合のイベント、127.0.0.1は動作しているPCではなくエミュレートされたAndroidデバイスを指します) 。サーバーが実行されているマシンを参照する「良い」アドレスをAndroidデバイスに指定する必要があります。

したがって、問題はソケットを使用することではありません。

+0

約12.0.0.1、ここでコードをコピーしたときは間違いでした。今私はエミュレータについてあなたが言ったことを試します – Alessandro

+0

今接続が動作しますが、メッセージを送信するとmscorlib.dllの 'System.FormatException'と表示されます 問題は、文字列を整数で解析しようとするときですメッセージが単なる数字の場合。この問題は、C#クライアントのバージョンには存在しません。だから私はまだそれはソケットに関連する可能性があると思う – Alessandro

+0

再び、それはソケットに関連していません。サーバ側のコンソールにメッセージを出力し、受信した内容を確認します。また、 'out.println(str);の後に' out.flush(); 'を追加します。 – AhmadWabbi

0

この行を使用してサーバーに接続するだけで、サーバーがPC上で実行されている場合はファイアウォールを無効にすることもできます。

Socket server= new Socket("192.168.1.1", 4444); // Enter your PC/Server IP address in place of 192.168.1.1 
+0

接続は動作しますが、サーバはメッセージを理解できません。「hello」を送信すると、「???? ??????? " – Alessandro

+0

このメッセージを読んだところで、サーバーコードを投稿することができます。 –

関連する問題