0

C# で動作するサーバーと Java (Android) で動作するクライアントを取得しました。完全に機能していますが、接続自体は一方向のみです。サーバーにデータを送信できるのはクライアントだけです。接続を両面にしようとしましたが、原因不明でコードが機能しません。

どこで間違っていますか?

C# - サーバー

public void SendBack(string message, NetworkStream stream)
{
  if (stream.CanWrite)
  {
    byte[] candy = Encoding.ASCII.GetBytes(message + ";");

    stream.Write(candy, 0, candy.Length);
    stream.Flush();

    Console.WriteLine("[SENT] " + message);
  }
  else { Console.WriteLine("ERROR! CANNOT WRITE ON NETWORKSTREAM!"); }
}

Java クライアント

//Creating the stream in the constructor
bReader = new BufferedReader(new InputStreamReader(gSocket.getInputStream()));

new Thread (new Runnable(){
  public void run() {
    Log.d(TAG, "Started listerner...");
    ListenServer();
  }
}).start();

//The function itself
private void ListenServer(){
  try
  {
    String inputLine = "";
    while (true){
      inputLine = bReader.readLine();
      if (inputLine != null) Log.d(TAG, "Got: " + inputLine);
    }
  }
  catch (IOException e){ Log.d(TAG, "Could not listen to sever!"); }
}

編集:実際の問題について言及するのを忘れてください...サーバーを起動し、通常どおりに動作し、クライアントはデータを送信でき、サーバーはメッセージを解釈できます。ただし、サーバーが何かを送信しても、クライアントは何もしません。つまり、実行しません

Log.d(TAG, "Got: " + inputLine);

コード。

4

1 に答える 1

0

サーバーが改行やキャリッジ リターンを送信していない可能性があります。BufferedReader.readLine()(リンク)期待しています。着信ストリームで StreamWriter を構築し、いずれかのWriteLineメソッドを使用できます。

于 2012-04-04T19:28:55.947 に答える