Oto kod, ale mam błąd:Otrzymuj byte [] za pomocą ByteArrayInputStream z gniazdka
bin = new ByteArrayInputStream(socket.getInputStream());
Czy to możliwe, aby otrzymać byte[]
użyciu ByteArrayInputStream
z gniazda?
Oto kod, ale mam błąd:Otrzymuj byte [] za pomocą ByteArrayInputStream z gniazdka
bin = new ByteArrayInputStream(socket.getInputStream());
Czy to możliwe, aby otrzymać byte[]
użyciu ByteArrayInputStream
z gniazda?
Nie. Używasz ByteArrayInputStream
, gdy masz tablicę bajtów i chcesz odczytać z tablicy tak, jakby był plikiem. Jeśli chcesz tylko do odczytu tablic bajtów z gniazda, to zrobić:
InputStream stream = socket.getInputStream();
byte[] data = new byte[100];
int count = stream.read(data);
Zmienna count
będzie zawierać liczbę bajtów faktycznie czytać, a dane będzie oczywiście w tablicy data
.
Nie można uzyskać wystąpienia ByteArrayInputStream
czytając bezpośrednio z gniazda.
Musisz przeczytać najpierw i znaleźć zawartość bajtową.
Następnie użyj go, aby utworzyć instancję ByteArrayInputStream
.
InputStream inputStream = socket.getInputStream();
// read from the stream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] content = new byte[ 2048 ];
int bytesRead = -1;
while((bytesRead = inputStream.read(content)) != -1) {
baos.write(content, 0, bytesRead);
} // while
Teraz, jak masz baos w ręku, nie sądzę, trzeba jeszcze instancji bais
.
Ale, aby to kompletny,
można wygenerować tablicę bajtów strumienia wejściowego, jak poniżej
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
* "ale mam błąd:" * Got jaki błąd? Zawsze kopiuj/wklej dane wyjściowe wyjątków i błędów do pytania (używając znaczników kodu). –
Twoje pytanie nie ma sensu. ByteArrayInputStream odczytuje bajty z tablicy bajtów. Jeśli chcesz czytać z gniazda, nie możesz odczytać z tablicy bajtów. Jaki problem próbujesz rozwiązać tutaj? – EJP