Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

dopmat / block4 / fsserver

.c
Скачиваний:
9
Добавлен:
15.03.2015
Размер:
1.52 Кб
Скачать
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>

#define SOCK_NAME "socket.soc" //имя сокета
#define BUF_SIZE 256 //размер буфера

int main(int argc, char ** argv)
{
  struct sockaddr srvr_name, rcvr_name;
  char buf[BUF_SIZE];
  int   sock;
  int   bytes;
  socklen_t namelen;

  sock = socket(AF_UNIX, SOCK_DGRAM, 0); //создание датаграмного сокета в файловом пространстве имен
  if (sock < 0) //проверка ошибок
  {
    perror("socket failed");
    return EXIT_FAILURE;
  }
  srvr_name.sa_family = AF_UNIX; //инициализация семейства адресов
  strcpy(srvr_name.sa_data, SOCK_NAME); //имя сокета
  if (bind(sock, &srvr_name, strlen(srvr_name.sa_data) +
        sizeof(srvr_name.sa_family)) < 0) //связь сокета с адресом сервера из srvr_name
  {
    perror("bind failed");
    return EXIT_FAILURE;
  }
  bytes = recvfrom(sock, buf, BUF_SIZE-1, 0, &rcvr_name, &namelen); //считывание данных из сокета в буфер
  if (bytes < 0) //проверка ошибок
  {
    perror("recvfrom failed");
    return EXIT_FAILURE;
  }
  buf[bytes] = 0;
  rcvr_name.sa_data[namelen] = 0;
  printf("Client sent: %s\n", buf); //вывод содержимого буфера
  close(sock); //закрытие сокета
  unlink(SOCK_NAME); //удаление сокета
}
 
Соседние файлы в папке block4