add macro to change setting
This commit is contained in:
parent
e6801d11b2
commit
9ff0082313
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:
|
||||
|
17
README.md
17
README.md
@ -1,3 +1,18 @@
|
||||
# HW12
|
||||
|
||||
Homework
|
||||
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…
Reference in New Issue
Block a user