我正在学习 c++ 以创建一个显示图像流的小应用程序。图像来自不存储为文件的 j2me 设备(所以我只有字节)。
我在想我需要先将图像的大小作为 int 发送,这样客户端就知道要为流中的特定图像读取多少内容。
我的问题是尺寸总是太大 - 当我最初只是尝试读取尺寸时不是图像的尺寸(我在 java 服务器中的 socket.write(int) 中发送这个长度并尝试了 dataoutputstream.writeInt )。我将发布一些代码,因为它可能非常简单。
为什么尺寸与我发送的不同?
ssize_t
readLine(int fd, char *buffer, size_t n)
{
ssize_t numRead, tt; /* # of bytes fetched by last read() */
size_t totRead; /* Total bytes read so far */
char *buf;
char ch;
if (n <= 0 || buffer == NULL) {
return -1;
}
buf = buffer; /* No pointer arithmetic on "void *" */
totRead = 0;
for (;;) {
numRead = read(fd, &ch, 1);
tt += numRead;
if (numRead == -1) {
return -1; /* Some other error */
} else if (numRead == 0) { /* EOF */
if (totRead == 0) /* No bytes read; return 0 */
return 0;
else /* Some bytes read; add '\0' */
break;
} else { /* 'numRead' must be 1 if we get here */
if (totRead < n - 1) { /* Discard > (n - 1) bytes */
totRead++;
*buf++ = ch;
}
if (ch == '\n')
break;
}
}
printf("read line %s ", buf);
fflush(stdout);
int test = (int)buf;
printf("read line int %i ", tt);
fflush(stdout);
*buf = '\0';
return totRead;
}