연결이 실수로 끊어지는 경우 SocketStream에서 앱 충돌을 처리 할 수 없습니다.

스테판 에르 텔

휴대폰 (Windows 10)에서 PC로 파일을 쉽게 전송할 수있는 작은 도구가 있습니다. 폴더를 검색하지 않고 와이어없이 신속하게 파일 만 제공합니다. "공유"> 다른 모든 클라이언트가 다운로드 할 파일을 표시합니다. 먼저 인터넷 서버를 "캐시"로 사용합니다. 이제이 아이디어를 WLAN / LAN으로 확장하고 있습니다. HTTP 또는 FTP없이 자체 솔루션을 구축하기로 선택했습니다. TCP / IP를 통한 단지 바이트. 첫 번째 테스트 솔루션이 잘 작동합니다. 나는 버퍼, 크기, 연속 스트림으로 많이 연주했습니다. 또한 GarbageCollector에서 멋진 작은 방법을 찾았습니다. 이제 저의 느린 Lumia 640은 메모리 부족없이 가장 큰 파일을 전송합니다 (150 이전에 최대 33MB를 사용하여 out_of_memory로 전송하고 완벽한 버퍼 크기로이 전화기를 WLAN 최대로 가져옵니다. 전송 속도) 믿을 수가 없네요.

하지만 제가 처리 할 수없는 것이 하나 있습니다 ..

연결이 갑자기 끊어지면 앱의 수신 부분에서이 줄이 즉시 TaskAwaiter 예외를 강제로 처리 할 수있는 것보다 훨씬 빠르게 보입니다. 동기화 변형, async, Task.Run (), TaskFactory.RunAsync를 사용하여 모든 것을 시도했습니다. UWP-App이 너무 빨리 충돌하는 것을 본 적이 없습니다. "inStream"은 우발적 인 소켓 연결과 Excep을 기반으로합니다. .CopyToAsync ()를 던집니다.

TaskAwaiter 예외 자체를 처리하는 방법 또는 다른 방법이 있습니까?

private async void SocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args)
        {
            socketListener.ConnectionReceived -= SocketListener_ConnectionReceived;
            await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                tb_status.Text = "incoming Connection... receiving the file... Please wait until it´s done....";
            });
            try
            {
                Stopwatch stoppUhr = new Stopwatch();
                stoppUhr.Start();

                Stream inStream = args.Socket.InputStream.AsStreamForRead();
                StorageFile outFile = await ApplicationData.Current.LocalCacheFolder.CreateFileAsync("theTestFile.wav", CreationCollisionOption.ReplaceExisting);
                Stream fileWriteStream = await outFile.OpenStreamForWriteAsync();

이 줄에서 복사-작업에서 예외가 발생하는 경우는 다음과 같습니다.

await inStream.CopyToAsync(fileWriteStream);
fileWriteStream.Dispose();
inStream.Dispose();

double elapsedSeconds = stoppUhr.Elapsed.TotalSeconds;
stoppUhr.Stop();
stoppUhr = null;
double recSizeMB = (await outFile.GetBasicPropertiesAsync()).Size / 1024 / 1024;
double mBitPerSec = recSizeMB * 8 / elapsedSeconds;
스테판 에르 텔

** WINDOWS 미리보기 문제였습니다 .... :) THX 귀하의 도움 :) **

며칠 후 내 앱에 첫 번째 알파 출시가 있습니다. :)) OneDrive 및 LAN / WLAN 용 QuickTransfer (W10 UWP)-future-STORE 링크

당신을 위해 :)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Laravel에서 페이지 충돌을 어떻게 처리 할 수 있습니까?

분류에서Dev

내 Android 앱을 로컬에서 빌드 할 수 없습니다.-Phonegap을 처음 사용하는 경우

분류에서Dev

인터넷에 연결할 수없는 경우 앱이 다운 됨

분류에서Dev

Git에서 커밋되지 않은 변경 사항을 병합 충돌로 처리 할 수 있습니까?

분류에서Dev

CMake는 다른 정적 라이브러리에서 기호 충돌을 감지 할 수 없습니다.

분류에서Dev

sudo로 앱을 실행할 때 X Server에 연결할 수 없습니다.

분류에서Dev

새니 타이 저에 아무것도 표시되지 않는 경우 메모리 충돌을 어떻게 디버깅 할 수 있습니까?

분류에서Dev

연결이 끊어진 경우 curl 또는 wget을 다시 시작할 수 있습니까?

분류에서Dev

Apple에서 사용자에게 알리지 않고 앱을 시작할 때 자체 캡처 된 충돌 로그를 보낼 수 있습니까?

분류에서Dev

aiortc에서 브라우저 피어의 연결이 끊어지는 것을 어떻게 알 수 있습니까?

분류에서Dev

커널이 정상적으로 충돌을 처리 할 수없는 이유

분류에서Dev

닫힌 상태에서 iOS 앱이 WatchKit 연결 요청을 처리하도록 할 수 있습니까?

분류에서Dev

인터넷 연결이 끊어진 경우 어떻게 WIFI 연결에서 다른 연결로 전환 할 수 있습니까?

분류에서Dev

절전 모드 이후 (또는 연결이 끊어진 경우) sshfs에 의해 마운트 된 폴더에 액세스 할 수 없습니다.

분류에서Dev

XCode 5는 "일반 오류로 인해 현재이 앱을 처리 할 수 없습니다."입니다.

분류에서Dev

nanoHTTP를 사용하는 Android 앱은 페이지 새로 고침을 처리 할 수 없습니다.

분류에서Dev

이 파일을 미리 볼 수 없습니다. 앱이 충돌했을 수 있습니다. 특정 코드 줄을 입력 할 때 발생합니다.

분류에서Dev

Android Studio는 에뮬레이터에서 앱을 실행할 수 없습니다.

분류에서Dev

동일한 리그의 충돌체가 서로 충돌하는 것을 방지합니다. 그러나 다른 리그와 충돌 할 수 있습니다.

분류에서Dev

CORS 오류로 인해 XAMP에서 실행중인 AngularJs 앱을 API에 연결할 수 없습니다.

분류에서Dev

AppDelegate에서 앱이 충돌하고 시작 화면을 지나칠 수 없습니다.

분류에서Dev

문서로드 후 입력 "변경"이벤트 또는 값을 처리 할 수 없습니다.

분류에서Dev

인앱 구매는 iTunes Store에 연결할 수 없습니다.

분류에서Dev

어떤 이유로 든 BT 연결이 끊어진 경우 MacOS에서 시스템 볼륨을 음소거 할 수 있습니까?

분류에서Dev

Windows 다중 모니터 : 대상을 사용할 수 있지만 활성화되지 않은 경우 대상이 물리적으로 소스에 연결되어 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

내 브라우저에서 "이 페이지에 연결할 수 없습니다"오류 또는 "err_connection_timed_out"을 어떻게 수정합니까?

분류에서Dev

연결된 앱을 더 이상 사용할 수없는 경우 Google 드라이브의 내 문서는 어떻게 되나요?

분류에서Dev

reader.ReadDataTable ()이 데이터베이스의 저장 프로 시저에서 데이터를 반환하지 않는 경우 처리 할 수 없습니다.

분류에서Dev

Nest는 둘 이상의 데이터베이스 연결이있는 경우 Repository에 대한 종속성을 해결할 수 없습니다.

Related 관련 기사

  1. 1

    Laravel에서 페이지 충돌을 어떻게 처리 할 수 있습니까?

  2. 2

    내 Android 앱을 로컬에서 빌드 할 수 없습니다.-Phonegap을 처음 사용하는 경우

  3. 3

    인터넷에 연결할 수없는 경우 앱이 다운 됨

  4. 4

    Git에서 커밋되지 않은 변경 사항을 병합 충돌로 처리 할 수 있습니까?

  5. 5

    CMake는 다른 정적 라이브러리에서 기호 충돌을 감지 할 수 없습니다.

  6. 6

    sudo로 앱을 실행할 때 X Server에 연결할 수 없습니다.

  7. 7

    새니 타이 저에 아무것도 표시되지 않는 경우 메모리 충돌을 어떻게 디버깅 할 수 있습니까?

  8. 8

    연결이 끊어진 경우 curl 또는 wget을 다시 시작할 수 있습니까?

  9. 9

    Apple에서 사용자에게 알리지 않고 앱을 시작할 때 자체 캡처 된 충돌 로그를 보낼 수 있습니까?

  10. 10

    aiortc에서 브라우저 피어의 연결이 끊어지는 것을 어떻게 알 수 있습니까?

  11. 11

    커널이 정상적으로 충돌을 처리 할 수없는 이유

  12. 12

    닫힌 상태에서 iOS 앱이 WatchKit 연결 요청을 처리하도록 할 수 있습니까?

  13. 13

    인터넷 연결이 끊어진 경우 어떻게 WIFI 연결에서 다른 연결로 전환 할 수 있습니까?

  14. 14

    절전 모드 이후 (또는 연결이 끊어진 경우) sshfs에 의해 마운트 된 폴더에 액세스 할 수 없습니다.

  15. 15

    XCode 5는 "일반 오류로 인해 현재이 앱을 처리 할 수 없습니다."입니다.

  16. 16

    nanoHTTP를 사용하는 Android 앱은 페이지 새로 고침을 처리 할 수 없습니다.

  17. 17

    이 파일을 미리 볼 수 없습니다. 앱이 충돌했을 수 있습니다. 특정 코드 줄을 입력 할 때 발생합니다.

  18. 18

    Android Studio는 에뮬레이터에서 앱을 실행할 수 없습니다.

  19. 19

    동일한 리그의 충돌체가 서로 충돌하는 것을 방지합니다. 그러나 다른 리그와 충돌 할 수 있습니다.

  20. 20

    CORS 오류로 인해 XAMP에서 실행중인 AngularJs 앱을 API에 연결할 수 없습니다.

  21. 21

    AppDelegate에서 앱이 충돌하고 시작 화면을 지나칠 수 없습니다.

  22. 22

    문서로드 후 입력 "변경"이벤트 또는 값을 처리 할 수 없습니다.

  23. 23

    인앱 구매는 iTunes Store에 연결할 수 없습니다.

  24. 24

    어떤 이유로 든 BT 연결이 끊어진 경우 MacOS에서 시스템 볼륨을 음소거 할 수 있습니까?

  25. 25

    Windows 다중 모니터 : 대상을 사용할 수 있지만 활성화되지 않은 경우 대상이 물리적으로 소스에 연결되어 있는지 어떻게 확인할 수 있습니까?

  26. 26

    내 브라우저에서 "이 페이지에 연결할 수 없습니다"오류 또는 "err_connection_timed_out"을 어떻게 수정합니까?

  27. 27

    연결된 앱을 더 이상 사용할 수없는 경우 Google 드라이브의 내 문서는 어떻게 되나요?

  28. 28

    reader.ReadDataTable ()이 데이터베이스의 저장 프로 시저에서 데이터를 반환하지 않는 경우 처리 할 수 없습니다.

  29. 29

    Nest는 둘 이상의 데이터베이스 연결이있는 경우 Repository에 대한 종속성을 해결할 수 없습니다.

뜨겁다태그

보관