Отворете Unix сокет за дейтаграми, при грешка изведете съобщение и излезте от програмата. Свържете сокета с файл socket.file , излезте при грешка. Вземете съобщение от сокета, излезте при грешка. Отпечатайте съобщението, затворете сокета и изтрийте сокет файла.
Copy #include<stdlib.h>
#include<unistd.h>
#include<stdio.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#define SOCK_NAME "socket.file"
#define BUF_SIZE 256
int main(int argc, char ** argv)
{
int sock = socket(AF_UNIX, SOCK_DGRAM, 0);
if(sock < 0)
{
printf("Error socket,\n");
return EXIT_FAILURE;
}
struct sockaddr server, client;
server.sa_family = AF_UNIX;
strcpy(server.sa_data, SOCK_NAME);
if(bind(sock, &server, strlen(server.sa_data) + sizeof(server.sa_family)) < 0)
{
printf("Error bind.\n");
return EXIT_FAILURE;
}
char buf[BUF_SIZE];
socklen_t len = sizeof(client);
int bytes = recvfrom(sock, buf, sizeof(buf), 0, &client, &len);
if(bytes < 0)
{
printf("Error recvfrom.\n");
return EXIT_FAILURE;
}
buf[bytes] = '\0';
client.sa_data[len] = 0;
printf("Client: %s\n", buf);
close(sock);
unlink(SOCK_NAME);
return EXIT_SUCCESS;
}