непонятки Unix Datagram socket

Модератор: Модераторы разделов

Аватара пользователя
Ardzhan
Сообщения: 57
ОС: Debian + WinXP на виртуалке

непонятки Unix Datagram socket

Сообщение Ardzhan »

есть некоторый сервер с использованием Unix Datagram socket:

Код: Выделить всё

 adm_listener = socket( AF_LOCAL, SOCK_STREAM, 0 );
 unlink(adm_socket_path);
 bzero( &adm_addr, sizeof( adm_addr ) );
 adm_addr.sun_family = AF_LOCAL;
 strcpy( adm_addr.sun_path, adm_socket_path);
 bind( adm_listener, ( struct sockaddr* ) &adm_addr, sizeof( adm_addr ) );
 listen( adm_listener, 10 );

....
select()
...
if (curr_sock==listener) { accept() }
...
else
{
 int x=0;
 while (x<10)
         {
          ... //Заполняем buf
          write(i, buf, strlen(buf));
          printf("%i\n", strlen(buf));
         }


}


Так вот, проблема в том, что на клиент приходит не 9 сообщений, а одно, содержащее все данные. Если данных больше чем buf, то сообщениее обрезается.
Спасибо сказали: