1.Вкратце читаю uchar[] в char[]
2.Передаю методом send(char[])
FILE* sFile = 0; // Дескриптор файла
unsigned char tgaHeader[12] = { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
unsigned char header[6];
unsigned char tempColors = 0;
fopen_s(&sFile,"Screen.tga", "wb");
if (!sFile) {
}
header[0] = ScreenWidth % 256;
header[1] = ScreenWidth / 256;
header[2] = ScreenHeight % 256;
header[3] = ScreenHeight / 256;
header[4] = BMI.bmiHeader.biBitCount;
header[5] = 0;
fwrite(tgaHeader, sizeof(tgaHeader), 1, sFile);
n = send(newsockfd[current], (char*)tgaHeader, sizeof(tgaHeader), 0);
fwrite(header, sizeof(header), 1, sFile);
n = send(newsockfd[current], (char*)header, sizeof(header), 0);
fwrite(ImageBuffer, BMI.bmiHeader.biSizeImage, 1, sFile);
char* s = new char[100];
_ultoa_s(BMI.bmiHeader.biSizeImage+17, s,100,10);
for (int i = 0; i < 100; i++)
((type*)args)[current].lalk->buffer[i] = s[i];
n = send(newsockfd[current], ((type*)args)[current].lalk->buffer, buflen, 0);
n = send(newsockfd[current], (char*)ImageBuffer, BMI.bmiHeader.biSizeImage, 0);
fclose(sFile);
На другой стороне
1.Принимаю методом recv(char[]) в переменную char[]
2.Записываю char[] как uchar[]
И не работает(данные искажены). Как это исправить?
FILE* f;
fopen_s(&f, "Screen.tga", "wb");
if (!f) {
}
unsigned char tgaHeader[12] = { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
unsigned char header[6];
n = recv(sockfd, (char*)tgaHeader, sizeof(tgaHeader), 0);
fwrite((unsigned char*)tgaHeader, sizeof(tgaHeader), 1, f);
n = recv(sockfd, (char*)header, sizeof(header), 0);
fwrite((unsigned char*)header, sizeof(header), 1, f);
// Записываем данные изображения:
bzero(buffer, buflen);
n = recv(sockfd, buffer, buflen, 0);
unsigned long j = (unsigned long)atol(buffer);
std::cout << buffer << std::endl;
std::cout<<'\n' << "j=" << j << std::endl;
bzero(buffer, buflen);
n = recv(sockfd, buffer, j, 0);
fwrite((unsigned char*)buffer,j, 1, f);
bzero(buffer, buflen);
fclose(f);