2011-10-31 114 views
1

我想在基于android的客户端和基于c#的服务器之间进行通信。我已经做到了..但我想发送字节数组到基于android的客户端..通常我发送字符串值..当我发送字节数组它不工作!在C#中,我们可以发送一个位于Socket类中的函数。但在java方面,我没有任何想法。我搜索我可以使用DatagramSocket的。但我想与Socket类做..嗯,这是在C#侧..Android客户端通讯

public void Send(byte[] buffer) 
     { 
      try 
      {     
       cSocket.Send(buffer); 
      } 
      catch (SocketException s_ex) 
      { 
       Console.WriteLine(s_ex); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 
     } 
     public void ReceiveListen() 
     {    
      while (true) 
      { 
       try 
       { 
        buffer = new byte[8192]; 

       int socketStatus = cSocket.Receive(buffer); 
        if (socketStatus!= 0) 
        { 
         Array.Resize(ref buffer, socketStatus); 

        Parse(buffer); 
       } 
      } 
      catch 
      { 
      } 

      Thread.Sleep(100); 
     } 
    } 

正如你看到的,我可以把字节数组,并免费获赠相同类型... 在Android端,我用这个代码(通常当我发送字符串值到客户端(安卓)它的工作..有C#中的流类...我可以发送它们的流类..)

 try { 
      BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); 
         String line = null; 
         while ((line = in.readLine()) != null) { 
          Log.d("ServerActivity", line); 
          handler.post(new Runnable() { 
           @Override 
           public void run() { 
            serverStatus.setText("Connected"); 
           } 
          }); 
         } 
         break; 
        } catch (Exception e) { 
         handler.post(new Runnable() { 
          @Override 
          public void run() { 
           serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones."); 
          } 
         }); 
         e.printStackTrace(); 
        } 

那么..它适用于字符串值..正如你所看到的..有getInputStream()函数..它期望字符串值..好这个函数上依赖于Socket类。但我需要得到字节代替的getInputStream()arrray功能...

我希望我可以解释我的问题以及..

谢谢

+0

您可以尝试Integer.toString(1234567890); – Yahor10

回答

1

你应该尝试socket.getInputStream()。read(byte [] b)。服务器还可以在字节数组之前发送字节数,以便客户端知道预计有多少个字节。

+0

哇它的有趣..我从来没有尝试过..而我会..它看起来不错!谢谢 – ertan2002