Created
March 29, 2024 08:43
-
-
Save lnykryn/c464ec21866247230b75724a15f19fd7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <unistd.h> | |
#include <sys/types.h> | |
#include <sys/socket.h> | |
#include <netinet/in.h> | |
#define PORT 8080 | |
#define MAX_NAME_LENGTH 256 | |
int main() { | |
int server_fd, new_socket; | |
struct sockaddr_in address; | |
int opt = 1; | |
int addrlen = sizeof(address); | |
char buffer[MAX_NAME_LENGTH] = {0}; | |
char reply[MAX_NAME_LENGTH + 5] = "Hi "; | |
// Creating socket file descriptor | |
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { | |
perror("socket failed"); | |
exit(EXIT_FAILURE); | |
} | |
// Forcefully attaching socket to the port 8080 | |
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { | |
perror("setsockopt"); | |
exit(EXIT_FAILURE); | |
} | |
address.sin_family = AF_INET; | |
address.sin_addr.s_addr = INADDR_ANY; | |
address.sin_port = htons(PORT); | |
// Forcefully attaching socket to the port 8080 | |
if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { | |
perror("bind failed"); | |
exit(EXIT_FAILURE); | |
} | |
if (listen(server_fd, 3) < 0) { | |
perror("listen"); | |
exit(EXIT_FAILURE); | |
} | |
while (1) { | |
printf("Waiting for connection...\n"); | |
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) { | |
perror("accept"); | |
exit(EXIT_FAILURE); | |
} | |
printf("Connection established.\n"); | |
// Receive the name from the client | |
recv(new_socket, buffer, MAX_NAME_LENGTH, 0); | |
printf("Received name: %s\n", buffer); | |
// Prepare the reply | |
strcat(reply, buffer); | |
// Send the reply | |
send(new_socket, reply, strlen(reply), 0); | |
printf("Hi message sent\n"); | |
// Close the connection | |
close(new_socket); | |
} | |
close(server_fd); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment