Socket.IOControl не поддерживается в среде докера - PullRequest
0 голосов
/ 02 мая 2019

Я использую метод Socket.IOControl, чтобы сохранить мое TCP-соединение живым.Этот метод хорошо работает на моем компьютере win10, но он не поддерживается в среде докера.

Здесь используется Socket.IOControl

var keepAliveParameter = KeepAliveParameter( 5000, 5000 );
TcpClient.Client.IOControl( IOControlCode.KeepAliveValues, keepAliveParameter, null );

//...

private byte[] KeepAliveParameter( int time, int interval )
{
    int[] parameters = { 1, time, interval };
    byte[] byteArray = new byte[3 * sizeof( int )];
    System.Buffer.BlockCopy( parameters, 0, byteArray, 0, 3 * sizeof( int ) );
    return byteArray;
}

. Выдает следующее исключение:

* 1009.*

System.PlatformNotSupportedException: Socket.IOControl обрабатывает специфичные для Windows управляющие коды и не поддерживается на этой платформе.

Файл Docker:

FROM microsoft/dotnet:2.2-sdk AS publish
COPY . /src
RUN dotnet restore /src/StressTestingServer/StressTestingServer.csproj --source http://192.168.10.149:5080/nuget --source https://api.nuget.org/v3/index.json
RUN dotnet publish /src/StressTestingServer/StressTestingServer.csproj --no-restore -c Release -o /app
RUN rm /app/appsettings.json

FROM microsoft/dotnet:2.2-runtime-alpine
WORKDIR /app
EXPOSE 8080
COPY --from=publish /app .
ENTRYPOINT dotnet StressTestingServer.dll

Есть ли обходной путьили лучшее решение для поддержания TCP-соединения живым?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...