Untitled
unknown
plain_text
2 years ago
2.1 kB
6
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <pthread.h>
#define PORT 1289
#define MAX_CLIENTS 5
void handle_client(int client_socket) {
while (1) {
char buffer[1024] = {0};
int valread = read(client_socket, buffer, 1024);
if (valread == 0) {
break;
}
printf("Received message from client: %s\n", buffer);
int num = atoi(buffer);
int c = 0;
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
c++;
}
}
char response[1024];
if (c == 2) {
sprintf(response, "The given number: %d is a prime number.", num);
} else {
sprintf(response, "The given number: %d is not a prime number.", num);
}
send(client_socket, response, strlen(response), 0);
}
close(client_socket);
}
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int addrlen = sizeof(address);
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror("socket failed");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);
if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
perror("bind failed");
exit(EXIT_FAILURE);
}
if (listen(server_fd, MAX_CLIENTS) < 0) {
perror("listen");
exit(EXIT_FAILURE);
}
printf("Server listening on port: %d\n", PORT);
while (1) {
if ((new_socket = accept(server_fd, (struct sockaddr )&address, (socklen_t)&addrlen)) < 0) {
perror("accept");
exit(EXIT_FAILURE);
}
printf("Accepted connection from %s:%d\n", inet_ntoa(address.sin_addr), ntohs(address.sin_port));
pthread_t client_thread;
if (pthread_create(&client_thread, NULL, (void *)handle_client, (void *)&new_socket) != 0) {
perror("pthread_create");
exit(EXIT_FAILURE);
}
}
return 0;
}Editor is loading...
Leave a Comment