0

我写了这段代码来写入一个套接字(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, \0),strlen(message)则为 5,但如果send包含\0,则bytesWritten可能为 6。但如果不是,则为 5,在这种情况下if (bytesWritten-len-1 == 0)是错误的。哪个是对的?

4

1 回答 1

3

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

于 2013-04-04T23:22:07.277 回答