add macro to change setting
This commit is contained in:
		
							parent
							
								
									e6801d11b2
								
							
						
					
					
						commit
						9ff0082313
					
				
					 8 changed files with 95 additions and 13 deletions
				
			
		
							
								
								
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -54,4 +54,10 @@ dkms.conf | |||
| 
 | ||||
| #Bin | ||||
| bin/* | ||||
| client_test/* | ||||
| server_test/* | ||||
| 
 | ||||
| p-client | ||||
| p-server | ||||
| server | ||||
| client | ||||
|  |  | |||
							
								
								
									
										1
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -1,6 +1,5 @@ | |||
| CC = gcc | ||||
| CFLAGS = -lm -Wall -O2 | ||||
| 
 | ||||
| Bin = server client p-server p-client | ||||
| 
 | ||||
| all: | ||||
|  |  | |||
							
								
								
									
										15
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
										
									
									
									
								
							|  | @ -1,3 +1,18 @@ | |||
| # HW12 | ||||
| 
 | ||||
| Homework | ||||
| 
 | ||||
| To build source, you should install `build-essential`.  | ||||
| 
 | ||||
| Usage:  | ||||
| ```bash | ||||
| ./server [OPTION]... | ||||
| ./client SERVERNAME PORT FILENAME | ||||
| ``` | ||||
| 
 | ||||
| available macro: | ||||
| - DEFAULT_SERVER_PORT : 9091 | ||||
| - DEFAULT_MAX_PATH_SIZE : 256(must be less than 1000) | ||||
| - TIMEOUT : 5(second unit) | ||||
| - USE_SENDFILE | ||||
|     - DEFAULT_SEND_FILE_CHUNK_SIZE : 0x100000(1MB) | ||||
							
								
								
									
										9
									
								
								client.c
									
										
									
									
									
								
							
							
						
						
									
										9
									
								
								client.c
									
										
									
									
									
								
							|  | @ -16,7 +16,16 @@ | |||
| 
 | ||||
| #ifdef USE_SENDFILE | ||||
| #include <sys/sendfile.h> | ||||
| #ifndef DEFAULT_SEND_FILE_CHUNK_SIZE | ||||
| const size_t SEND_FILE_CHUNK_SIZE = 0x100000; /*1MB*/ | ||||
| #else | ||||
| const size_t SEND_FILE_CHUNK_SIZE = DEFAULT_SEND_FILE_CHUNK_SIZE; /*1MB*/ | ||||
| #endif | ||||
| #endif | ||||
| #ifndef DEFAULT_TIMEOUT | ||||
| static const int TIMEOUT = 5; | ||||
| #else | ||||
| static const int TIMEOUT = DEFAULT_TIMEOUT; | ||||
| #endif | ||||
| 
 | ||||
| /*========
 | ||||
|  |  | |||
							
								
								
									
										12
									
								
								p-client.c
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								p-client.c
									
										
									
									
									
								
							|  | @ -16,9 +16,17 @@ | |||
| 
 | ||||
| #ifdef USE_SENDFILE | ||||
| #include <sys/sendfile.h> | ||||
| #ifndef DEFAULT_SEND_FILE_CHUNK_SIZE | ||||
| const size_t SEND_FILE_CHUNK_SIZE = 0x100000; /*1MB*/ | ||||
| #else | ||||
| const size_t SEND_FILE_CHUNK_SIZE = DEFAULT_SEND_FILE_CHUNK_SIZE; /*1MB*/ | ||||
| #endif | ||||
| #endif | ||||
| #ifndef DEFAULT_TIMEOUT | ||||
| static const int TIMEOUT = 5; | ||||
| #else | ||||
| static const int TIMEOUT = DEFAULT_TIMEOUT; | ||||
| #endif | ||||
| 
 | ||||
| /*========
 | ||||
|  *Operation | ||||
|  *========*/ | ||||
|  | @ -121,7 +129,7 @@ int main(int argc, const char *argv[]){ | |||
|     struct sockaddr_in addr; | ||||
|     const char * filename; | ||||
|     const char * server_name; | ||||
|     in_port_t server_port = SERVER_PORT; | ||||
|     in_port_t server_port = 0; | ||||
|     int sock, err; | ||||
|     if (argc != 4){ | ||||
|         fprintf(stderr,"invaild arguments number."); | ||||
|  |  | |||
							
								
								
									
										29
									
								
								p-server.c
									
										
									
									
									
								
							
							
						
						
									
										29
									
								
								p-server.c
									
										
									
									
									
								
							|  | @ -14,6 +14,33 @@ | |||
| #include <fcntl.h> | ||||
| #include "socket_wrapper.h" | ||||
| 
 | ||||
| static const int MAX_LISTEN_SOCKET = 16; | ||||
| 
 | ||||
| #ifdef USE_SENDFILE | ||||
| #include <sys/sendfile.h> | ||||
| #ifndef DEFAULT_SEND_FILE_CHUNK_SIZE | ||||
| const size_t SEND_FILE_CHUNK_SIZE = 0x100000; /*1MB*/ | ||||
| #else | ||||
| const size_t SEND_FILE_CHUNK_SIZE = DEFAULT_SEND_FILE_CHUNK_SIZE; /*1MB*/ | ||||
| #endif | ||||
| #endif | ||||
| #ifndef DEFAULT_SERVER_PORT | ||||
| static const in_port_t SERVER_PORT = 9091; | ||||
| #else | ||||
| static const in_port_t SERVER_PORT = DEFAULT_SERVER_PORT; | ||||
| #endif | ||||
| #ifndef DEFAULT_MAX_PATH_SIZE | ||||
| /*0 < x < MAX_PATH_SIZE*/ | ||||
| static const uint16_t MAX_PATH_SIZE = 256; | ||||
| #else | ||||
| static const uint16_t MAX_PATH_SIZE = DEFAULT_MAX_PATH_SIZE; | ||||
| #endif | ||||
| #ifndef DEFAULT_TIMEOUT | ||||
| static const int TIMEOUT = 5; | ||||
| #else | ||||
| static const int TIMEOUT = DEFAULT_TIMEOUT; | ||||
| #endif | ||||
| 
 | ||||
| /*========
 | ||||
|  *Operation | ||||
|  *========*/ | ||||
|  | @ -190,7 +217,7 @@ int main(int argc, const char *argv[]){ | |||
|         assert(msg != NULL); | ||||
|         fprintf(stderr,"server bind on %s:%d\n",msg ,SERVER_PORT); | ||||
|     } | ||||
|     if(listen(sock,1) < 0){ | ||||
|     if(listen(sock,MAX_LISTEN_SOCKET) < 0){ | ||||
|         perror("listen failed"); | ||||
|         return 1; | ||||
|     } | ||||
|  |  | |||
							
								
								
									
										26
									
								
								server.c
									
										
									
									
									
								
							
							
						
						
									
										26
									
								
								server.c
									
										
									
									
									
								
							|  | @ -14,6 +14,31 @@ | |||
| #include <fcntl.h> | ||||
| #include "socket_wrapper.h" | ||||
| 
 | ||||
| #ifdef USE_SENDFILE | ||||
| #include <sys/sendfile.h> | ||||
| #ifndef DEFAULT_SEND_FILE_CHUNK_SIZE | ||||
| const size_t SEND_FILE_CHUNK_SIZE = 0x100000; /*1MB*/ | ||||
| #else | ||||
| const size_t SEND_FILE_CHUNK_SIZE = DEFAULT_SEND_FILE_CHUNK_SIZE; /*1MB*/ | ||||
| #endif | ||||
| #endif | ||||
| #ifndef DEFAULT_SERVER_PORT | ||||
| static const in_port_t SERVER_PORT = 9091; | ||||
| #else | ||||
| static const in_port_t SERVER_PORT = DEFAULT_SERVER_PORT; | ||||
| #endif | ||||
| #ifndef DEFAULT_MAX_PATH_SIZE | ||||
| /*0 < x < MAX_PATH_SIZE*/ | ||||
| static const uint16_t MAX_PATH_SIZE = 256; | ||||
| #else | ||||
| static const uint16_t MAX_PATH_SIZE = DEFAULT_MAX_PATH_SIZE; | ||||
| #endif | ||||
| #ifndef DEFAULT_TIMEOUT | ||||
| static const int TIMEOUT = 5; | ||||
| #else | ||||
| static const int TIMEOUT = DEFAULT_TIMEOUT; | ||||
| #endif | ||||
| 
 | ||||
| /*========
 | ||||
|  *Operation | ||||
|  *========*/ | ||||
|  | @ -146,6 +171,7 @@ int send_response(int sock,int fd, uint8_t * buf, size_t bufsize){ | |||
| #endif | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static int sock; | ||||
| void safe_exit(){ | ||||
|     close(sock); | ||||
|  |  | |||
|  | @ -7,17 +7,9 @@ | |||
| #include <arpa/inet.h> | ||||
| #include <netdb.h> | ||||
| 
 | ||||
| #ifdef USE_SENDFILE | ||||
| #include <sys/sendfile.h> | ||||
| const size_t SEND_FILE_CHUNK_SIZE = 0x100000; /*1MB*/ | ||||
| #endif | ||||
| 
 | ||||
| static const in_port_t SERVER_PORT = 9091; | ||||
| static const size_t DEFAULT_BUF_SIZE = 4096; | ||||
| static const size_t MINIMUM_BUF_SIZE = 1024; | ||||
| /*0 < x < MAX_PATH_SIZE*/ | ||||
| static const uint16_t MAX_PATH_SIZE = 256; | ||||
| static const int TIMEOUT = 5; | ||||
| 
 | ||||
| enum{ | ||||
|     RES_OK = 0, | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 ubuntu201711081
						ubuntu201711081