Я хочу общаться между клиентом на базе Android и сервером на основе c #.Я уже сделал это .. Но я хочу отправить байтовый массив клиенту на базе Android .. Обычно я посылаю строковое значение .. Когда я посылаю байтовый массив, это не работает !!В C # мы можем послать байтовый массив функции, которая находится в классе Socket. Но в Java, у меня нет никаких идей.Я искал, что я мог бы использовать DatagramSocket .. Но я хочу сделать это с классом Socket .. Ну, это на стороне 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 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 () .. И она ожидает строковые значения .. Ну, эта функция зависит от класса сокетов .. Но мне нужна функция, которая получаетмассив байтов вместо getInputStream () ...
Я надеюсь, что смогу объяснить и мою проблему ..
Спасибо