Fix error socket connection with void*
This commit is contained in:
parent
b85e479c47
commit
b4330a0b1f
|
|
@ -20,8 +20,9 @@
|
||||||
extern int create_socket(int sin_family, int sock);
|
extern int create_socket(int sin_family, int sock);
|
||||||
extern socket_address_unix config_unixdomain_server_address();
|
extern socket_address_unix config_unixdomain_server_address();
|
||||||
extern socket_address_ipv4 config_tcp_upd_server_address();
|
extern socket_address_ipv4 config_tcp_upd_server_address();
|
||||||
extern void connect_to_server(void* server_address, int client_socket);
|
extern void connect_to_server(int socket_type, void* server_address, int client_socket);
|
||||||
extern void bind_server(void* server_address, int socket_type, int server_socket);
|
extern void bind_server(void* server_address, int socket_type, int server_socket);
|
||||||
extern int accept_connection(int client_socket, void* client_address, int server_socket);
|
extern int accept_connection(int socket_type, int client_socket, void* client_address, int server_socket);
|
||||||
|
extern socklen_t attribuite_type_and_getsizeof(int socket_type, struct sockaddr* address, void* socket_address);
|
||||||
|
|
||||||
#endif // __SOCKET_H__
|
#endif // __SOCKET_H__
|
||||||
|
|
@ -73,14 +73,14 @@ void attribuite_and_init_socket(int socket_type)
|
||||||
client_socket = create_socket(AF_INET, SOCK_STREAM);
|
client_socket = create_socket(AF_INET, SOCK_STREAM);
|
||||||
socket_address_ipv4 tcp_ip_address = config_tcp_upd_server_address();
|
socket_address_ipv4 tcp_ip_address = config_tcp_upd_server_address();
|
||||||
server_address = (void*)&tcp_ip_address;
|
server_address = (void*)&tcp_ip_address;
|
||||||
connect_to_server(server_address,client_socket);
|
connect_to_server(socket_type, server_address,client_socket);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UDP_SOCKET_FLAG: // UDP SOCKET
|
case UDP_SOCKET_FLAG: // UDP SOCKET
|
||||||
client_socket = create_socket(AF_INET, SOCK_STREAM);
|
client_socket = create_socket(AF_INET, SOCK_STREAM);
|
||||||
socket_address_ipv4 udp_ip_address = config_tcp_upd_server_address();
|
socket_address_ipv4 udp_ip_address = config_tcp_upd_server_address();
|
||||||
server_address = (void*)&udp_ip_address;
|
server_address = (void*)&udp_ip_address;
|
||||||
connect_to_server(server_address,client_socket);
|
connect_to_server(socket_type, server_address,client_socket);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -88,7 +88,7 @@ void attribuite_and_init_socket(int socket_type)
|
||||||
client_socket = create_socket(AF_UNIX, SOCK_DGRAM);
|
client_socket = create_socket(AF_UNIX, SOCK_DGRAM);
|
||||||
socket_address_unix unix_ip_address = config_unixdomain_server_address();
|
socket_address_unix unix_ip_address = config_unixdomain_server_address();
|
||||||
server_address = (void*)&unix_ip_address;
|
server_address = (void*)&unix_ip_address;
|
||||||
connect_to_server(server_address,client_socket);
|
connect_to_server(socket_type, server_address,client_socket);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
||||||
38
src/socket.c
38
src/socket.c
|
|
@ -43,13 +43,14 @@ socket_address_ipv4 config_tcp_upd_server_address()
|
||||||
return server_address;
|
return server_address;
|
||||||
}
|
}
|
||||||
|
|
||||||
void connect_to_server(void *server_address, int client_socket)
|
void connect_to_server(int socket_type, void *server_address, int client_socket)
|
||||||
{
|
{
|
||||||
struct sockaddr* address = (struct sockaddr*)&server_address;
|
struct sockaddr address;
|
||||||
|
socklen_t address_sizeof = attribuite_type_and_getsizeof(socket_type, &address, server_address);
|
||||||
|
|
||||||
int connection_response = connect(client_socket,
|
int connection_response = connect(client_socket,
|
||||||
address,
|
&address,
|
||||||
(socklen_t)sizeof(server_address)
|
address_sizeof
|
||||||
);
|
);
|
||||||
|
|
||||||
if(connection_response == SOCKET_ERROR_CODE)
|
if(connection_response == SOCKET_ERROR_CODE)
|
||||||
|
|
@ -61,14 +62,29 @@ void connect_to_server(void *server_address, int client_socket)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
socklen_t attribuite_type_and_getsizeof(int socket_type, struct sockaddr* address, void* socket_address)
|
||||||
|
{
|
||||||
|
if(socket_type == UNIX_SOCKET_FLAG)
|
||||||
|
{
|
||||||
|
address = (struct sockaddr*)&*((socket_address_unix*)socket_address);
|
||||||
|
return (socklen_t)sizeof(*(socket_address_unix*)socket_address);
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
address = (struct sockaddr*)&*((socket_address_ipv4*)socket_address);
|
||||||
|
return (socklen_t)sizeof(*(socket_address_ipv4*)socket_address);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void bind_server(void *server_address, int socket_type, int server_socket)
|
void bind_server(void *server_address, int socket_type, int server_socket)
|
||||||
{
|
{
|
||||||
|
|
||||||
struct sockaddr* address = (struct sockaddr*)&server_address;
|
|
||||||
|
struct sockaddr address;
|
||||||
|
socklen_t address_sizeof = attribuite_type_and_getsizeof(socket_type, &address, server_address);
|
||||||
|
|
||||||
int server_bind_response = bind(server_socket, address, sizeof(server_address));
|
int server_bind_response = bind(server_socket, &address, address_sizeof);
|
||||||
|
|
||||||
if (socket_type == UNIX_SOCKET_FLAG) unlink((const char*)address);
|
if (socket_type == UNIX_SOCKET_FLAG) unlink((const char*)&address);
|
||||||
|
|
||||||
if(server_bind_response == SOCKET_ERROR_CODE)
|
if(server_bind_response == SOCKET_ERROR_CODE)
|
||||||
{
|
{
|
||||||
|
|
@ -77,12 +93,14 @@ void bind_server(void *server_address, int socket_type, int server_socket)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int accept_connection(int client_socket, void *client_address, int server_socket)
|
int accept_connection(int socket_type, int client_socket, void *client_address, int server_socket)
|
||||||
{
|
{
|
||||||
socklen_t client_addr_len = sizeof(client_address);
|
socklen_t client_addr_len = sizeof(client_address);
|
||||||
struct sockaddr *address = (struct sockaddr*)&client_address;
|
|
||||||
|
struct sockaddr address;
|
||||||
|
attribuite_type_and_getsizeof(socket_type, &address, client_address);
|
||||||
|
|
||||||
client_socket = accept(server_socket, address, &client_addr_len);
|
client_socket = accept(server_socket, &address, &client_addr_len);
|
||||||
|
|
||||||
if(client_socket == SYSTEM_EXIT_FAILED)
|
if(client_socket == SYSTEM_EXIT_FAILED)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue