diff --git a/.vscode/settings.json b/.vscode/settings.json index b867064..88a1184 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,6 +7,7 @@ "signal.h": "c", "string.h": "c", "stdlib.h": "c", - "inet.h": "c" + "inet.h": "c", + "un.h": "c" } } \ No newline at end of file diff --git a/src/server.c b/src/server.c index 2a61755..389a9c5 100644 --- a/src/server.c +++ b/src/server.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -18,13 +19,17 @@ #define TCP_SOCKET_FLAG 1 #define UDP_SOCKET_FLAG 2 #define UNIX_SOCKET_FLAG 3 - +#define SOCK_PATH "pingpong.socket" int num_of_read_bytes = 0; typedef struct sockaddr_in socket_address; +typedef struct sockaddr_un socket_address_unix; socket_address client_address; socklen_t client_addr_len; +socket_address server_address; +socket_address_unix server_address_unix; + size_t buffer_size; int socket_type; @@ -52,13 +57,22 @@ int create_socket() socket_address config_server_address() { - socket_address server_address; - - server_address.sin_family = sin_family; - server_address.sin_port = htons(SERVER_PORT); - server_address.sin_addr.s_addr = address; - return server_address; + if(socket_type == UNIX_SOCKET_FLAG) + { + socket_address server_address; + server_address.sin_family = sin_family; + server_address.sin_port = htons(SERVER_PORT); + server_address.sin_addr.s_addr = address; + + + }else{ + + socket_address_unix server_address; + server_address.sun_family = AF_UNIX; + strcpy(server_address.sun_path, SOCK_PATH); + unlink(SOCK_PATH); + } } void bind_server(int server_socket, socket_address server_address)