Russian Qt Forum

Qt => Работа с сетью => Тема начата: Germiona от Ноябрь 12, 2008, 14:21



Название: QSocket - как принять и отправить массив данных unsigned char?
Отправлено: Germiona от Ноябрь 12, 2008, 14:21
Добрый день!

Как можно принять/отправить массив данных типа unsigned char?

Функции readBlock() и writeBlock() работают только с типом char

 ???


Название: Re: QSocket - как принять и отправить массив данных unsigned char?
Отправлено: pastor от Ноябрь 12, 2008, 14:35
Можно так:

Код:
//writting

unsigned char *array_out = new unsigned char[<size>];
...
socket->writeBlock(array_out, sizeof(unsigned char)*<size>);
....
delete []array_out;
....

//reading

unsigned char *array_in = new unsigned char[<size>];
...
socket->readBlock(array_in, sizeof(unsigned char)*<size>);
....
delete []array_in;
....


Название: Re: QSocket - как принять и отправить массив данных unsigned char?
Отправлено: Germiona от Ноябрь 12, 2008, 14:58
Код:
[color=navy]//writting

unsigned char *array_out = new unsigned char[<size>];
...
socket->writeBlock(array_out, sizeof(unsigned char)*<size>);
....
delete []array_out;
....
[/color]

Не всё так просто....

При компиляции выдается ошибка:

Код:
No matching function for call to QSocket::writeBlock(unsigned char*, int)
Candidates are: Q_LONG QSocket::writeBlock(const char *, long unsigned int)



Название: Re: QSocket - как принять и отправить массив данных unsigned char?
Отправлено: BRE от Ноябрь 12, 2008, 15:23
Не всё так просто....

При компиляции выдается ошибка:

Код:
No matching function for call to QSocket::writeBlock(unsigned char*, int)
Candidates are: Q_LONG QSocket::writeBlock(const char *, long unsigned int)

А может просто socket->writeBlock( (char*)array_out, sizeof(unsigned char)*<size>);
или место приведения типа static_cast<char*>( array_out ) какой использовать.


Название: Re: QSocket - как принять и отправить массив данных unsigned char?
Отправлено: pastor от Ноябрь 12, 2008, 15:24
Код:
socket->writeBlock((const char *)array_out, sizeof(unsigned char)*<size>);

socket->readBlock((char *)array_in, sizeof(unsigned char)*<size>);