Как получить значение исключения сокета

1

Я использовал компонент для создания соединения сокета. Теперь у меня есть клиент и сервер, которые могут подключаться друг к другу компонентом. но моя проблема в том, что: когда произошла какая-то ошибка, я получил сообщение:

System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it

Я хочу знать, есть ли какая-либо связь между этим кодом (0x80004005) и Winsock Error Codes в MSDN WebSite? что означает этот код? отображается ли код ошибки значения?! или что-то вроде этого?

на самом деле я хочу получить связанное значение, например, 10061 но я не знаю, как я могу получить его с помощью строкового значения. Спасибо за любую помощь.

Теги:
socketexception

2 ответа

3
Лучший ответ

Свойство ErrorCode объекта исключения содержит код ошибки сокета. Список кодов ошибок определены здесь.

Ошибка в вашем случае: WSAECONNREFUSED 10061

BTW, вы должны поймать SocketException, а не общее исключение, чтобы получить код ошибки.

try
{
}
catch (System.Net.Sockets.SocketException sockEx)
{
int errorCode = sockEx.ErrorCode;
}

Если, однако, вы хотите получить собственный код ошибки, вы можете использовать sockEx.NativeErrorCode.

  • 0
    Я знаю это. но я хочу знать, есть ли способ понять код ошибки, например, 10061, следующим образом: 0x80004005 ?? У меня есть некоторые другие, которые я хочу знать их код ошибки, не особенно в этом случае.
  • 0
    Код ошибки 10061 должен присутствовать в свойстве ErrorCode. Нет необходимости «сопоставлять» код ошибки в строке (0x80004005) с фактическим кодом ошибки (10061); это уже есть в собственности.
Показать ещё 6 комментариев
2

Если вы структурируете свой код, чтобы поймать исключение С#, тогда в исключении должен быть текст ошибки.

ПРИМЕР:

  try 
  {
     ...
  }
  catch (Exception ex)
    MessaageBox.show(ex.toString());
  }

В противном случае вы всегда можете PInvoke старого Win32 FormatMessage:

http://bobobobo.wordpress.com/2009/02/02/getting-winsock-error-messages-in-string-format/

И всегда есть sockets.com (из моих 16-разрядных дней программирования WinSock2):

  • 0
    так этот код (0x80004005) не уникален? и я не могу получить значение исключения из этого?
  • 0
    Если вы программируете сокет напрямую, вы можете перехватить исключение и прочитать сообщение об ошибке и / или номер ошибки непосредственно из исключения. Если вы используете сторонний компонент, похоже, что он просто возвращает общую ошибку «0x80004005: Операция не удалась». Компонент маскирует исходную ошибку.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню