服务器 - 客户端连接;我错过了什么?

时间:2012-04-04 18:59:38

标签: c# java client

我在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!"); }
}

编辑:忘记提到最新的实际问题...我启动服务器,行为与平常一样,客户端可以发送数据,服务器可以解释该消息。 Hoverwer,如果服务器发送了什么,客户端什么都不做。我的意思是,它没有执行

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

1 个答案:

答案 0 :(得分:0)

可能是服务器没有发送换行和/或回车。 BufferedReader.readLine() (link)期待它。您可以使用传入流构造StreamWriter,并使用WriteLine方法之一。