Skip to content
Snippets Groups Projects
Commit 89c20c95 authored by Vanshika Mohan Bongade's avatar Vanshika Mohan Bongade
Browse files

Upload New File

parent 4ae72e8d
Branches
No related tags found
No related merge requests found
#include "rshlib.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int start_client(char *server_ip, int port) {
int sock;
struct sockaddr_in server;
// Create socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror("[ERROR] Could not create socket");
return ERR_RDSH_CLIENT;
}
server.sin_addr.s_addr = inet_addr(server_ip);
server.sin_family = AF_INET;
server.sin_port = htons(port);
// Connect to server
if (connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) {
perror("[ERROR] Connection failed");
return ERR_RDSH_CLIENT;
}
printf("[DEBUG] Connected to server at %s:%d\n", server_ip, port);
return sock;
}
/**
* Main loop for remote command execution.
*/
int exec_remote_cmd_loop(char *address, int port) {
int sock = start_client(address, port);
if (sock < 0) return sock;
char cmd[RDSH_COMM_BUFF_SZ];
while (1) {
printf("dsh4> ");
if (fgets(cmd, sizeof(cmd), stdin) == NULL) {
printf("\n");
break;
}
cmd[strcspn(cmd, "\n")] = '\0';
if (strcmp(cmd, "exit") == 0) {
break;
}
// Send command to server
if (send(sock, cmd, strlen(cmd) + 1, 0) < 0) {
perror("[ERROR] Send failed");
break;
}
// Receive output
char response[RDSH_COMM_BUFF_SZ];
int recv_size;
while ((recv_size = recv(sock, response, sizeof(response), 0)) > 0) {
response[recv_size] = '\0';
printf("%s", response);
if (response[recv_size - 1] == RDSH_EOF_CHAR) break;
}
}
close(sock);
return OK;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment