Я прочитал Beej Guide to Network Programming, чтобы получить доступ к TCP-соединениям. В одном из образцов клиентский код для простого клиента TCP-потока выглядит так:
if ((numbytes = recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) {
perror("recv");
exit(1);
}
buf[numbytes] = '\0';
printf("Client: received '%s'\n", buf);
close(sockfd);
Я установил буфер меньше, чем общее количество байтов, которые я отправляю. Я не совсем уверен, как я могу получить другие байты. Должен ли я перебирать recv()
, пока не получаю '\0'
?
* Примечание на стороне сервера. Я также реализую его функцию sendall()
, поэтому она должна фактически отправлять все клиенту.
См. также 6.1. Простой сервер потоков в руководстве.