voranstellen Ich weiß technisch TCP_NOPUSH in FreeBSD und TCP_CORK in Linux angenommen, um ähnlich zu sein.Wie Kopfzeile vor dem Aufruf sendfile mit TCP_NOPUSH in FreeBSD
In Linux kann ich TCP_CORK setzen, einen Header senden, sendfile() und TCP_CORK deaktivieren, um den Header vor der Datei einzufügen. In FreeBSD habe ich versucht, das gleiche mit TCP_NOPUSH zu tun, aber es scheint, als wäre der Header vom Dateiinhalt getrennt. Ich muss zu dumm sein, um etwas falsch zu machen.
Hier ist mein Code (Linux und BSD):
[geteilt]:
int yes = 1;
int no = 0;
char buf[30] = "Hello World!\n";
[Linux]
setsockopt(sockfd, IPPROTO_TCP, TCP_CORK, &yes, sizeof(int));
write(sockfd, buf, 30);
sendfile(sockfd, filefd, NULL, SIZE_OF_FILE);
setsockopt(sockfd, IPPROTO_TCP, TCP_CORK, &no, sizeof(int));
Ergebnis: Hallo Welt \ n Text .. ..Text .....
Allerdings in FreeBSD:
setsockopt(sockfd, IPPROTO_TCP, TCP_NOPUSH, &yes, sizeof(int));
write(sockfd, buf, 30);
sendfile(filefd, sockfd, 0, SIZE_OF_FILE, NULL, NULL, 0);
setsockopt(sockfd, IPPROTO_TCP, TCP_NOPUSH, &new, sizeof(int));
Ergebnis: Hallo Welt \ n
Was soll ich tun, um das gleiche Verhalten wie in Linux zu bekommen ???
Scheint, dass ich das Argument hdtr total ignoriert habe !!! Vielen Dank! – Yuji