- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <unistd.h>
- #include <string.h>
- #define SIZE 1000
- int main() {
- char serverMessage[SIZE] = "You have a missed call from server\n";
- int socketDescriptor = socket(AF_INET, SOCK_STREAM, 0);
- struct sockaddr_in serverAddress;
- serverAddress.sin_family = AF_INET;
- serverAddress.sin_port = htons(9002);
- serverAddress.sin_addr.s_addr = INADDR_ANY;
- bind(socketDescriptor, (struct sockaddr*) &serverAddress;, sizeof(serverAddress));
- listen(socketDescriptor, 5);
- int client_socket = accept(socketDescriptor, NULL, NULL);
- pid_t pid = fork();
- if (pid < 0) {
- fprintf(stderr, "Fork failed\n");
- return 1;
- }
- if (pid == 0) {
- // Child process (server receive message from client)
- char clientMessage[SIZE];
- while (1) {
- recv(client_socket, &clientMessage;, sizeof(clientMessage), 0); //receive message from client
- printf("\nClient message: %s", clientMessage); //display message
- }
- } else {
- // Parent process (send message to client)
- while (1) {
- printf("Server: ");
- fgets(serverMessage, SIZE, stdin); //get message from keyboard
- send(client_socket, serverMessage, strlen(serverMessage), 0); //send message to client
- }
- }
- close(socketDescriptor);
- return 0;
- }
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <unistd.h>
- #include <string.h>
- #define SIZE 1000
- int main() {
- int socketDescriptor = socket(AF_INET, SOCK_STREAM, 0);
- struct sockaddr_in serverAddress;
- serverAddress.sin_family = AF_INET;
- serverAddress.sin_port = htons(9002);
- serverAddress.sin_addr.s_addr = INADDR_ANY;
- connect(socketDescriptor, (struct sockaddr *)&serverAddress;, sizeof(serverAddress));
- pid_t pid = fork();
- if (pid < 0) {
- fprintf(stderr, "Fork failed\n");
- return 1;
- }
- if (pid == 0) {
- // Child process (client send message to server)
- char clientMessage[SIZE];
- while (1) {
- printf("Client: ");
- fgets(clientMessage, SIZE, stdin); //get message from keyboard
- send(socketDescriptor, clientMessage, strlen(clientMessage), 0); //send message to server
- }
- } else {
- // Parent process (receive message from server)
- char serverMessage[SIZE];
- while (1) {
- recv(socketDescriptor, &serverMessage;, sizeof(serverMessage), 0); //receive message from server
- printf("\nServer message: %s", serverMessage); //display message
- }
- }
- close(socketDescriptor);
- return 0;
- }