Android客户端通信

时间:2011-10-31 14:44:51

标签: android sockets client

我想在基于android的客户端和基于c#的服务器之间进行通信。我已经做到了..但我想将字节数组发送到基于android的客户端..通常我发送字符串值..当我发送字节数组它不起作用!!在C#中我们可以发送字节数组一个Socket类的函数。但是在java方面,我什么都不知道。我搜索过我可以使用DatagramSocket ..但是我想用Socket Class做这个..好吧这是在c#side ..

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 Side中,我使用了这段代码(通常当我将字符串值发送到客户端(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类..但我需要一个获取字节的函数arrray而不是getInputStream()...

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

谢谢

1 个答案:

答案 0 :(得分:1)

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