Пример за двойка сокети

Отворете двойка сокети, при грешка изведете съобщение и излезте от програмата. Създайте дъщерен процес.

Родителския процес: затваря втория сокет, пише съобщение в първия сокет, чете отговора от първия сокет, опечатва полученото съобщение и затваря сокета.

Дъщерния процес: затваря първия сокет, чете съобщение от втория сокет, отпечатва получения текст, отговаря с подобаващо съобщение на втория сокет и го затваря.

sockpair.c

#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>

#define STR1 "How are you?"
#define STR2 "I'm ok, thank you."
#define BUF_SIZE 1024

int main(int argc, char ** argv)
{
  int sockets[2];
  char buf[BUF_SIZE];
  int pid;

  if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) < 0) 
  {
      perror("socketpair() failed");
      return EXIT_FAILURE;
  }
  pid = fork();
  if (pid != 0) 
  {
    close(sockets[1]);
    write(sockets[0], STR1, sizeof(STR1));
    read(sockets[0], buf, sizeof(buf));
    printf("%s\n", buf);
    close(sockets[0]);
  }
  else
  {
    close(sockets[0]);
    read(sockets[1], buf, sizeof(buf));
    printf("%s\n", buf);
    write(sockets[1], STR2, sizeof(STR2));
    close(sockets[1]);
  }
}

results matching ""

    No results matching ""