我想在基于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()...
我希望我也可以解释我的问题..
谢谢
答案 0 :(得分:1)
你应该尝试socket.getInputStream()。read(byte [] b)。服务器还可以在字节数组之前发送字节数,以便客户端知道预期的数量。