serialVersionUID
наличие поля не обеспечивается интерфейсом Serializable
, так как интерфейс не может обеспечить наличие поля. Вы можете объявить класс, который реализует Serializable
, он будет прекрасно компилироваться без наличия поля serialVersionUID
.
Проверка поля serialVersionUID
жестко закодирована в инструментах. Одним из примеров являются методы JDK java.io.ObjectStreamClass.getSerialVersionUID()
, которые загружают значение serialVersionUID
с отражением:
/**
* Returns explicit serial version UID value declared by given class, or
* null if none.
*/
private static Long getDeclaredSUID(Class> cl) {
try {
Field f = cl.getDeclaredField("serialVersionUID");
int mask = Modifier.STATIC | Modifier.FINAL;
if ((f.getModifiers() & mask) == mask) {
f.setAccessible(true);
return Long.valueOf(f.getLong(null));
}
} catch (Exception ex) {
}
return null;
}
Вызов к accept()
блоки, пока это не имеет соединение. Только после того как трехстороннее квитирование завершается нет никакого соединения, таким образом, accept()
не должен возвращаться. Для неблокирования сокетов это не заблокируется, но, и при этом это не даст Вам информацию о частично завершенных квитированиях.
Это в конечном счете испытает таймаут, потому что тот сценарий находится в фактической поверхности DoS (Отказ в обслуживании) и ресурс для принятия, возвращенного к для использования операционной системой. если мог бы заставить основной сокет блокироваться, так как клиент подключен к серверу однажды принять возвраты с дескриптором правильного файла
Если ошибка происходит во время соединения от клиента, значение errno будет установлено, и хорошая идея была бы журналом или отобразила бы сообщение об ошибке., однако прочитайте страницы справочника, это - лучший источник информации в большинстве случаев.
В случае существует отказ, скажем, тайм-аут, потому что квитирование не завершается, это возвратит-1 и установит errno. Я полагаю после рассмотрения страницы справочника, что это установит errno на ECONNABORTED.
Если клиент никогда не отправит ACK, примите (), то или заблокирует или возвратит EAGAIN, если сокет будет отмечен, не блокируясь.