Fix unix domain server implementation
This commit is contained in:
parent
c1ce100bcb
commit
e9c29b1a43
|
|
@ -7,6 +7,7 @@
|
||||||
"signal.h": "c",
|
"signal.h": "c",
|
||||||
"string.h": "c",
|
"string.h": "c",
|
||||||
"stdlib.h": "c",
|
"stdlib.h": "c",
|
||||||
"inet.h": "c"
|
"inet.h": "c",
|
||||||
|
"un.h": "c"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
20
src/server.c
20
src/server.c
|
|
@ -3,6 +3,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <sys/un.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
|
@ -18,13 +19,17 @@
|
||||||
#define TCP_SOCKET_FLAG 1
|
#define TCP_SOCKET_FLAG 1
|
||||||
#define UDP_SOCKET_FLAG 2
|
#define UDP_SOCKET_FLAG 2
|
||||||
#define UNIX_SOCKET_FLAG 3
|
#define UNIX_SOCKET_FLAG 3
|
||||||
|
#define SOCK_PATH "pingpong.socket"
|
||||||
int num_of_read_bytes = 0;
|
int num_of_read_bytes = 0;
|
||||||
typedef struct sockaddr_in socket_address;
|
typedef struct sockaddr_in socket_address;
|
||||||
|
typedef struct sockaddr_un socket_address_unix;
|
||||||
|
|
||||||
socket_address client_address;
|
socket_address client_address;
|
||||||
socklen_t client_addr_len;
|
socklen_t client_addr_len;
|
||||||
|
|
||||||
|
socket_address server_address;
|
||||||
|
socket_address_unix server_address_unix;
|
||||||
|
|
||||||
size_t buffer_size;
|
size_t buffer_size;
|
||||||
int socket_type;
|
int socket_type;
|
||||||
|
|
||||||
|
|
@ -52,13 +57,22 @@ int create_socket()
|
||||||
|
|
||||||
socket_address config_server_address()
|
socket_address config_server_address()
|
||||||
{
|
{
|
||||||
socket_address server_address;
|
|
||||||
|
|
||||||
|
if(socket_type == UNIX_SOCKET_FLAG)
|
||||||
|
{
|
||||||
|
socket_address server_address;
|
||||||
server_address.sin_family = sin_family;
|
server_address.sin_family = sin_family;
|
||||||
server_address.sin_port = htons(SERVER_PORT);
|
server_address.sin_port = htons(SERVER_PORT);
|
||||||
server_address.sin_addr.s_addr = address;
|
server_address.sin_addr.s_addr = address;
|
||||||
|
|
||||||
return server_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)
|
void bind_server(int server_socket, socket_address server_address)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue