В настоящее время я использую старую систему на Tru64, которая использует множество сокетов UDP с использованием функции sendto (). Сокеты используются в нашем коде для отправки сообщений в / из различных процессов и затем в конечном итоге в приложение толстого клиента, которое подключается удаленно. Иногда гнездо для толстого клиента застревает, это может привести к созданию некоторых из этих сообщений. У меня вопрос, как я могу определить текущий размер буфера и как определить максимальный размер буфера сообщений. Приведенный ниже код дает фрагмент того, как я настраиваю порт и использую функцию sendto.
/* need to adjust the maximum size we can send on this */
/* as it needs to be able to cope with the biggest */
/* messages we send */
lenlen = sizeof(len) ;
/* allow double for when the system is under load */
int lenlen, len ;
lenlen = sizeof(len) ;
len = 2 * 32000;
msg_socket = socket( AF_UNIX,SOCK_DGRAM, 0);
result = setsockopt(msg_socket, SOL_SOCKET, SO_SNDBUF, (char *)&len, lenlen) ;
result = sendto( msg_socket,
(char *)message,
(int)message_len,
flags,
dest_addr,
addrlen);
Примечание. Мы портировали это приложение на Linux, и проблема, похоже, там не появляется.
Любая помощь будет принята с благодарностью.
Привет