Я новичок в C# и поддержал старый игровой двигатель, который имеет сервер TCP/IP. Просмотр игр подключается к нему, чтобы играть. Я обнаружил, что насильственно закрытый розет может привести к тому, что сервер прекратит слушать. Это означает, что каждый может привести к тому, что игра подходит к ней и насильственно закрыв розетку. Разбитый зритель, или сценарий, ребенок, или тайм -аут от подвесного слушателя, который поменялся на диск. Исходные кодировщики C# кодировали его, поэтому, если возникает ошибка сокета, то цикл прерывается и сдается. Таким образом, сервер, похоже, будет вниз, регистрирует сообщение об ошибке, но остается запущенным. Очевидно, что не очень хорошая вещь, так как все, что нужно сделать, это игнорировать удаленные гнезда, которые прерывают. Зритель хорошо справится с этим. < /P>
Логика более высокого уровня ничего не делает с этим. На нем также очень сложно работать, если не сказать больше. Затем он может продолжить запуск сервера. < /P>
до: < /p>
try
{
while (TRUE) {
// create a socket and listen
// handle the data
}
catch (OperationCanceledException)
{
m_shutdownEvent.Set();
}
catch (Exception err)
{
m_logWriter.Write(this, LogPrio.Debug, err.Message);
ExceptionThrown?.Invoke(this, err);
}
catch (OperationCanceledException)
{
m_shutdownEvent.Set();
}
}
< /code>
после: < /p>
while (TRUE) {
try
{
// create a socket and listen
// handle the data
// Handle shutdown of the game
catch (OperationCanceledException)
{
m_shutdownEvent.Set();
}
// I added WSAECONNRESET
catch (SocketException ex)
{
if (ex.ErrorCode == 10054) // WSAECONNRESET
{
// Handle the connection reset error
continue;
}
}
// Handle real errors such as port conflicts
catch (Exception err)
{
m_logWriter.Write(this, LogPrio.Debug, err.Message);
ExceptionThrown?.Invoke(this, err);
}
} // try moved inside the loop
}
< /code>
Я добавил wsaeconnreset -> Продолжить, которая решает насильственно закрытую ошибку, которая преследует меня. Документы говорят, что я должен также использовать WSAeshutDown и WSAeConnReset, но я делаю новый розет https://learn.microsoft.com/en-us/windo ... -2образной Но некоторые могут, и я не уверен, что еще следует добавить. Такие как WSAeshutDown и WSAeConnReset? < /P>
и как правильно их использовать в качестве имен. Я не знаю, как использовать имя wsaeconnreset вместо значения. Это кросс -платформно -Linux/Windows C#, поэтому я не уверен, как лучше справиться с этим. Enum? Или есть какая -то кросс -платформ, включающая, я могу использовать?
Подробнее здесь: https://stackoverflow.com/questions/797 ... ttp-server
Какие ошибки я должен завоевать на сервере C# Dot Net HTTP -сервер? ⇐ Linux
-
Anonymous
1754247900
Anonymous
Я новичок в C# и поддержал старый игровой двигатель, который имеет сервер TCP/IP. Просмотр игр подключается к нему, чтобы играть. Я обнаружил, что насильственно закрытый розет может привести к тому, что сервер прекратит слушать. Это означает, что каждый может привести к тому, что игра подходит к ней и насильственно закрыв розетку. Разбитый зритель, или сценарий, ребенок, или тайм -аут от подвесного слушателя, который поменялся на диск. Исходные кодировщики C# кодировали его, поэтому, если возникает ошибка сокета, то цикл прерывается и сдается. Таким образом, сервер, похоже, будет вниз, регистрирует сообщение об ошибке, но остается запущенным. Очевидно, что не очень хорошая вещь, так как все, что нужно сделать, это игнорировать удаленные гнезда, которые прерывают. Зритель хорошо справится с этим. < /P>
Логика более высокого уровня ничего не делает с этим. На нем также очень сложно работать, если не сказать больше. Затем он может продолжить запуск сервера. < /P>
до: < /p>
try
{
while (TRUE) {
// create a socket and listen
// handle the data
}
catch (OperationCanceledException)
{
m_shutdownEvent.Set();
}
catch (Exception err)
{
m_logWriter.Write(this, LogPrio.Debug, err.Message);
ExceptionThrown?.Invoke(this, err);
}
catch (OperationCanceledException)
{
m_shutdownEvent.Set();
}
}
< /code>
после: < /p>
while (TRUE) {
try
{
// create a socket and listen
// handle the data
// Handle shutdown of the game
catch (OperationCanceledException)
{
m_shutdownEvent.Set();
}
// I added WSAECONNRESET
catch (SocketException ex)
{
if (ex.ErrorCode == 10054) // WSAECONNRESET
{
// Handle the connection reset error
continue;
}
}
// Handle real errors such as port conflicts
catch (Exception err)
{
m_logWriter.Write(this, LogPrio.Debug, err.Message);
ExceptionThrown?.Invoke(this, err);
}
} // try moved inside the loop
}
< /code>
Я добавил wsaeconnreset -> Продолжить, которая решает насильственно закрытую ошибку, которая преследует меня. Документы говорят, что я должен также использовать WSAeshutDown и WSAeConnReset, но я делаю новый розет https://learn.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2образной Но некоторые могут, и я не уверен, что еще следует добавить. Такие как WSAeshutDown и WSAeConnReset? < /P>
и как правильно их использовать в качестве имен. Я не знаю, как использовать имя wsaeconnreset вместо значения. Это кросс -платформно -Linux/Windows C#, поэтому я не уверен, как лучше справиться с этим. Enum? Или есть какая -то кросс -платформ, включающая, я могу использовать?
Подробнее здесь: [url]https://stackoverflow.com/questions/79724263/what-errors-should-i-catch-on-a-c-sharp-dot-net-http-server[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия