Project 5
Project 5
Client code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
int main() {
int clientSocket;
struct sockaddr_in serverAddr;
char buffer[BUFFER_SIZE];
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(SERVER_PORT);
inet_pton(AF_INET, SERVER_IP, &serverAddr.sin_addr);
// Send data
send(clientSocket, buffer, strlen(buffer), 0);
printf("File registration sent to server.\n");
close(clientSocket);
return 0;
}
Server Code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
if (file != NULL) {
// File exists, add client if not already registered
if (!isClientRegistered(file, ip, port)) {
strcpy(file->clientIP[file->numberOfPeers], ip);
file->clientPort[file->numberOfPeers] = port;
file->numberOfPeers++;
}
} else {
// Create new file entry
struct FileInfo *newFile = (struct FileInfo
*)malloc(sizeof(struct FileInfo));
strcpy(newFile->filename, filename);
strcpy(newFile->fullFileHash, hash);
strcpy(newFile->clientIP[0], ip);
newFile->clientPort[0] = port;
newFile->numberOfPeers = 1;
newFile->next = head;
head = newFile;
}
}
char clientIP[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &clientAddr.sin_addr, clientIP, INET_ADDRSTRLEN);
close(clientSocket);
}
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = INADDR_ANY;
serverAddr.sin_port = htons(PORT);
while (1) {
clientSocket = accept(serverSocket, (struct sockaddr
*)&clientAddr, &addrSize);
if (clientSocket < 0) {
perror("Accept failed");
continue;
}
handleClient(clientSocket, clientAddr);
}
close(serverSocket);
return 0;
}
Output :