Untitled
unknown
plain_text
5 months ago
2.0 kB
3
Indexable
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #define SERVER_PORT 8080 #define BUFFER_SIZE 1024 #define FILE_TO_SEND "test.txt" int main(void) { int sockfd; struct sockaddr_in server_addr; struct sockaddr_storage client_addr; socklen_t client_addr_len = sizeof(client_addr); // Create socket sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("Could not create socket"); exit(EXIT_FAILURE); } int yes = 1; setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)); // Initialize and configure memset(&server_addr, 0, sizeof(server_addr)); memset(&client_addr, 0, sizeof(client_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(SERVER_PORT); // Bind the socket to the server address int err = bind(sockfd, (const struct sockaddr *)&server_addr, sizeof(server_addr)); if (0 > err) { perror("Bind failed."); close(sockfd); exit(EXIT_FAILURE); } printf("Server is running on port %d...\n", SERVER_PORT); // Listen err = listen(sockfd, 5); if (0 > err) { perror("Listening failed."); close(sockfd); exit(EXIT_FAILURE); } // Begin communicating int remote_fd = accept(sockfd, (struct sockaddr*)&client_addr, &client_addr_len); char addr[INET6_ADDRSTRLEN]; char buffer[BUFFER_SIZE] = {0}; ssize_t received = recv(remote_fd, buffer, sizeof(buffer) - 1, 0); if (0 == strcmp(buffer, "test.txt")) { uint32_t p_size = 46; p_size = htonl (p_size); const char * p_response = "Congrats! You successfully transferred a file.\n"; err = send(remote_fd, &p_size, sizeof(p_size), 0); err = send(remote_fd, p_response, strlen(p_response), 0); } close(sockfd); }
Editor is loading...
Leave a Comment