我写了这段代码来写入一个套接字(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)
是错误的。哪个是对的?