如何使用write()套接字编程发送部分char数组

时间:2013-10-02 02:05:32

标签: c sockets tcp

有人能告诉我一种使用write()通过TCP只发送一部分char数组的方法吗?我想发送前255个字节,然后作为另一个数据块发送接下来的255个字节,依旧而不是整个数据变量,如:

 n = write(newsockfd,data,strlen(data));

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

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;
}