我写了这段代码来写一个套接字(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
(又名h
,e
,l
,l
,o
,{{1} }),然后\0
将为5,但如果strlen(message)
包含send
,则\0
可能为6.但如果不是,则为5,在这种情况下bytesWritten
错了。哪个是对的?
答案 0 :(得分:3)
send(3)
发送给定数量的字节;如果你发送的是一个字符串,一个整数数组或一个随机的struct
,它就不会在意。如果您不包含结尾'\0'
,则不包括结尾。