После int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
мой connect(sock, serv_addr, serv_addr_size)
вызов иногда завершается с ошибкой errno==111
(ECONNREFUSED). Могу ли я из этого ответа сделать вывод, что другая сторона (т.е. serv_addr->sin_addr.s_addr
), по крайней мере, понимает SCTP, поэтому повторная попытка в порядке? Я ожидаю, что сетевой стек, который не знает SCTP, просто не отправит никакого ответа, что приведет к ошибке ETIMEDOUT
. Но вместо этого он может сгенерировать ICMP Protocol unreachable error
, не приведет ли это к ошибке ECONNREFUSED
?
Мой клиент - единственная причина, по которой у другой стороны есть сервер SCTP, и если сервер SCTP на другая сторона отсутствует, то, вероятно, также отсутствует стек SCTP. Я знаю, что сервер отвечает на пинг (ICMP) и S SH (TCP).