feat: Worker tells Host to remove itself from active port list when done
This commit is contained in:
parent
45378a6df7
commit
56f6c65a19
29
main.c
29
main.c
|
@ -5,6 +5,7 @@
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -26,6 +27,32 @@ int SetupServer(int* socket_fd, int port) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int RemoveServer(int port) {
|
||||||
|
int socket_fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
|
struct sockaddr_in server_addr;
|
||||||
|
server_addr.sin_family = AF_INET;
|
||||||
|
server_addr.sin_port = htons(1337);
|
||||||
|
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
|
||||||
|
int connected = connect(socket_fd, (struct sockaddr*)&server_addr, sizeof(server_addr));
|
||||||
|
if(connected < 0) {
|
||||||
|
printf("Connect error: %s (%i)\n", strerror(errno), errno);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Removing Server\n");
|
||||||
|
char data[5];
|
||||||
|
char flag = 0x1;
|
||||||
|
u_int32_t nport = htonl(port);
|
||||||
|
memcpy(data, &flag, sizeof(char));
|
||||||
|
memcpy(data+1, &nport, sizeof(u_int32_t));
|
||||||
|
int bytes_sent = send(socket_fd, data, sizeof(data), 0);
|
||||||
|
if(bytes_sent == -1) {
|
||||||
|
printf("Send error: %s (%i)\n", strerror(errno), errno);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int StartEnv(int port) {
|
int StartEnv(int port) {
|
||||||
int socket_fd;
|
int socket_fd;
|
||||||
int setup = SetupServer(&socket_fd, port);
|
int setup = SetupServer(&socket_fd, port);
|
||||||
|
@ -49,7 +76,6 @@ int StartEnv(int port) {
|
||||||
bytes_received = recv(client_sock, buffer, sizeof(buffer), 0);
|
bytes_received = recv(client_sock, buffer, sizeof(buffer), 0);
|
||||||
if(bytes_received < 0) {
|
if(bytes_received < 0) {
|
||||||
printf("Receive Error: %s (%d)\n", strerror(errno), errno);
|
printf("Receive Error: %s (%d)\n", strerror(errno), errno);
|
||||||
break;
|
|
||||||
} else if(bytes_received == 0) {
|
} else if(bytes_received == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -79,6 +105,7 @@ int StartEnv(int port) {
|
||||||
send(client_sock, data, obs_size, 0);
|
send(client_sock, data, obs_size, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
RemoveServer(port);
|
||||||
shutdown(client_sock, SHUT_RDWR);
|
shutdown(client_sock, SHUT_RDWR);
|
||||||
close(client_sock);
|
close(client_sock);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue