gpt4 book ai didi

安卓客户端通信

转载 作者:行者123 更新时间:2023-11-30 04:29:31 25 4
gpt4 key购买 nike

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

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 端,我使用了这段代码(通常当我将字符串值发送到客户端(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() ...

我希望我也能解释我的问题..

谢谢

最佳答案

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

关于安卓客户端通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com