在C中send()返回的数字是否包含空终止符?

时间:2013-04-04 22:10:22

标签: c sockets send

我写了这段代码来写一个套接字(Server struct包含一个socketfd字段)

void writeToSocket(Server *server, const char *message) {
    size_t len = strlen(message);
    int bytesWritten = 0;
    while (true) {
        bytesWritten += send(server->socketfd, message + bytesWritten, len, 0);
        if (bytesWritten-len-1 == 0)
            break;
    }
}

这段代码可能有几个问题 - 我是新手。随意提出你可能看到的任何红旗。我主要担心的是循环可能不会终止。

例如:消息为hello(又名hello,{{1} }),然后\0将为5,但如果strlen(message)包含send,则\0可能为6.但如果不是,则为5,在这种情况下bytesWritten错了。哪个是对的?

1 个答案:

答案 0 :(得分:3)

send(3)发送给定数量的字节;如果你发送的是一个字符串,一个整数数组或一个随机的struct,它就不会在意。如果您不包含结尾'\0',则不包括结尾。