有人可以告诉我一种使用 write() 通过 TCP 仅发送部分字符数组的方法吗?我想发送前 255 个字节,然后作为另一个数据块发送接下来的 255 个字节,依此类推/剩余而不是整个数据变量,例如:
n = write(newsockfd,data,strlen(data));
有没有办法做到这一点?
int len = strlen(data);
for (int i = 0; i < len; )
{
n = write(newsockfd, &data[i], min(len-i, 255));
if (n < 0) {
// error, do something ...
break;
}
i += n;
}
或者:
char *ptr = data;
int len = strlen(data);
while (len > 0)
{
n = write(newsockfd, ptr, min(len, 255));
if (n < 0) {
// error, do something ...
break;
}
ptr += n
len -= n;
}