реклама на сайте
подробности

 
 
> взаиомодействие процессов через UNIX сокеты
romez777
сообщение Jul 19 2005, 10:01
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



В целях изучения (периодически поглядывая в книгу Стивенса) сделал простой сервер и клиент, чтобы они общались через unix-sockets.

Сервер стартует успешно, файл сокета создается, а клиент ругается. Вот код клиента:

Код
// на этот сокет забиндин сервер
#define SOCK_FILE "/tmp/ddns.sock"

int main(void)
{
 int sd;    /* socket descriptor */
 int saddrlen, caddrlen;
 struct sockaddr_un serv_addr, cli_addr;
 ....

 memset(&serv_addr, 0, sizeof serv_addr);
 serv_addr.sun_family = AF_UNIX;
 strcpy(serv_addr.sun_path, SOCK_FILE);
 saddrlen = sizeof serv_addr.sun_family + strlen(serv_addr.sun_path);

 /* create UNIX socket */
 if ( (sd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0 ) {
    perror("socket() error!");
    exit(EXIT_FAILURE);
 }

 memset(&cli_addr, 0, sizeof cli_addr);
 cli_addr.sun_family = AF_UNIX;
 strcpy(cli_addr.sun_path, "/tmp/cli.XXXXXX");
 mkstemp(cli_addr.sun_path);
 caddrlen = sizeof cli_addr.sun_family + strlen(cli_addr.sun_path);

 if ( bind(sd, (struct sockaddr *)&cli_addr, caddrlen) < 0 ) {
    perror("bind() error");
    exit(EXIT_FAILURE);
 }

 //  здесь возникает ошибка - bind() error: Address already in use
 return 0;
}


Что не так?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 09:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01346 секунд с 7
ELECTRONIX ©2004-2016