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



我写这段代码是为了写一个套接字(Server结构体包含一个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(又名h, e, l, l, o, ),那么strlen(message)将是5,但如果send包括,那么bytesWritten可能是6。但如果不是,它将是5,在这种情况下,if (bytesWritten-len-1 == 0)是错误的。哪个是正确的?

send(3)发送给定的字节数;不管你发送的是一个字符串,一个整数数组,还是一个随机的struct,它都不会在意。如果不包含结尾的'',则不包含它。

最新更新