diff options
Diffstat (limited to '03_exercise/srv')
-rw-r--r-- | 03_exercise/srv/shell.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/03_exercise/srv/shell.c b/03_exercise/srv/shell.c index c7155c6..74c492b 100644 --- a/03_exercise/srv/shell.c +++ b/03_exercise/srv/shell.c @@ -100,6 +100,13 @@ void send_file(int client_fd, char *path) { return; } + int flag = 1; + // force flush + flag = 1; + setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int)); + flag = 0; + setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int)); + int length = snprintf(NULL, 0, "%ld", sz); sprintf(buffer, "<<!%ld!", sz); sprintf(&(buffer[3 + length + 1]), "%s!\n", path); @@ -109,10 +116,10 @@ void send_file(int client_fd, char *path) { return; } - int flag = 1; - // force flush + flag = 1; setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int)); flag = 0; + setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int)); usleep(150); |