2012-05-05 30 views
18
private void StartReceivingData(string ipAddress, int iPort) 
    { 
     try 
     { 
      if (!_bContinueReciving) 
      { 
       //initializeMainSocket(ipAddress, iPort); 
       _mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);//<------HERE IS RAISED THE EXCEPTION 
       _mSocket.Bind(new IPEndPoint(IPAddress.Parse(ipAddress), iPort)); 
       // _mSocket.Bind(new IPEndPoint(IPAddress.Loopback, iPort)); 
       _mSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true); 
       _mSocket.IOControl(IOControlCode.ReceiveAll, new byte[4] { 1, 0, 0, 0 }, new byte[4] { 0, 0, 0, 0 }); 
       //var 1 
       _mSocket.BeginReceive(_buffReceivedData, 0, _buffReceivedData.Length, SocketFlags.None, 
            new AsyncCallback(OnReceive), null); 
       initializeLocalSocket(); 
      } 
      else 
      { 
       _bContinueReciving = false; 
       _mSocket.Close(); 
      } 
     } 
     catch (Exception exception) 
     { 
      Debug.WriteLine(exception); 
     } 
    } 

Nie rozumiem, dlaczego ... zadziałało, a teraz tak nie jest. czy ktoś mógłby mi pomóc? Przesyłam strumieniowo za pomocą vlc i nie chcę odbierać pakietów, robić raportów, a następnie odtwarzać lokalne dla odtwarzaczaPodjęto próbę uzyskania dostępu do gniazda w sposób zabroniony przez jego uprawnienia dostępu. czemu?

+1

Jeśli wyjątek ma miejsce w CREATE, oczekuję, że musisz być administratorem, aby utworzyć gniazda RAW. –

+1

Wysoce powiązane, jeśli nie powielone [Próbowano uzyskać dostęp do gniazda w sposób zabroniony przez jego uprawnienia dostępu] (http://stackoverflow.com/questions/4799651/an-attempt-was-made-to-access -a-socket-in-a-way-zabronione przez by-go-access-permissi) – Robotnik

+0

Widziałem blok przez 'AV' z tym wyjątkiem:> 02/01/2017 \t 15:02:18 \t Zablokowany Blokując reguły portu F: \ Program > Files \ AccessLayers \ PortNox \ Bin \ PortNoxSvc.exe \t antywirusowe Standardowy > Ochrona: Nie dopuścić do masowych robaki mailingowych od wysyłania poczty \t xxxx: 25 – user7365403

Odpowiedz

29

Najprawdopodobniej gniazdo jest utrzymywane przez jakiś proces. Użyj netstat -o, aby znaleźć który.

+0

Sysinternals [TCPView] (http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx) może być również pomocna przy sprawdzaniu, czy jest używany przez inny proces (jak właśnie napotkałem) – KornMuffin

+0

Jeśli wyjątek miał miejsce BIND, to miałoby dla mnie sens. Ponieważ dzieje się to w CREATE, oczekuję, że musisz być administratorem, aby tworzyć gniazda RAW. –

+0

Widziałem tylko ten błąd w bind. Oto przykład: http://help.octopusdeploy.com/discussions/problems/22665-an-attempt-was-made-to-access-a-socket-in-a-way-dbidden-by-its-access- uprawnienia – stark

32

Ponownie załaduj program Visual Studio z uprawnieniami administratora. Windows Sockets (WinSock) nie pozwoli ci utworzyć gniazda SocketType.RAW bez administratora lokalnego. I pamiętaj, że Twoje Rozwiązanie będzie wymagało podwyższonych uprawnień do działania zgodnie z oczekiwaniami!

+0

To pytanie ma 2 lata i już ma akceptowaną odpowiedź, do której nie wydaje się dodać Twojej odpowiedzi. – pquest

+11

A jednak zaakceptowana odpowiedź nie wyjaśnia, dlaczego wyjątek ma miejsce w CREATE. to wyjaśniałoby, dlaczego wyjątek miał miejsce w BIND. –

+10

@pquest - nie zgadzam się z komentarzem w całości - ta odpowiedź jest w rzeczywistości bardzo przydatna i zajmuje się pewną sytuacją, której w głównej odpowiedzi nie uwzględniono. Przegłosowałem. –

6

Cóż, nie rozumiem nawet sprawcy tego problemu. Ale w moim przypadku problem jest zupełnie inny. Próbowałem uruchomić netstat -o lub netstat -ab, oba pokazują, że nie ma żadnej aplikacji aktualnie słuchającej na porcie 62434, której moja aplikacja próbuje nasłuchiwać. To dla mnie naprawdę dezorientujące.

Po prostu próbowałem myśleć o tym, co zrobiłem, aby przestało działać (działało wcześniej). Cóż, pomyślałem o udostępnieniu Internetu, które zrobiłem na moim adapterze Ethernet, z prywatną wirtualną siecią LAN (używając Hyper-v w Windows 10). Po prostu musiałem wyłączyć udostępnianie i wszystko działało dobrze.

Mam nadzieję, że pomoże to komuś innemu mieć ten sam problem. I oczywiście, jeśli ktoś mógłby to wyjaśnić, proszę dodać więcej szczegółów w swojej odpowiedzi lub może jako komentarz do mojej odpowiedzi.

+1

dziękuję, ustawienie udostępniania Internetu okazało się być moim problemem – kellpossible

+1

używając podobnego zakresu portów, co pozwala mi sądzić, że opcja udostępniania połączenia niewidocznie wykorzystuje kilka różnych zakresów portów bez zgłaszania ich do narzędzia netstat. – kellpossible

0

Wystąpił bardzo podobny błąd, gdy mój komputer został uaktualniony do systemu Windows 10 dodatek rocznica, i skutecznie zdmuchnął wszystkie moje ustawienia. To było jak praca z nowym komputerem, ustawienie wszystkiego na pierwszy raz ... i nagle otrzymałem ten błąd, gdy mój kod próbował korzystać z usługi internetowej.

Ale prawdziwym winowajcą, a rozwiązaniem w moim przypadku było to, że musiałem sprawdzić opcję uruchamiania w wersji 64-bitowej. Ten wybór został utracony w moim przypadku.

Narzędzia -> Opcje -> Projekty i rozwiązania -> Projekty internetowe -> "Użyj 64-bitowej wersji IIS Express do stron internetowych i projektów".

0

Miałem podobny problem, ale naprawiłem go, wykonując pewne zmiany w ustawieniach zapory.

Można wykonaj poniższe czynności

  1. przejdź do "Start" -> "Panel sterowania"
  2. kliknij "Zapora systemu Windows" enter image description here

  3. Wewnątrz Zapora systemu Windows, kliknij na „Zezwalaj programowi lub funkcji przez Zaporę systemu Windows” enter image description here

  4. Wewnątrz Zezwalaj na programy, kliknij przycisk "Zmień ustawienia". Po kliknięciu przycisku Zmień ustawienia przycisk "Zezwól na inny program ..." zostanie włączony. enter image description here

  5. Kliknij przycisk "Pozwól innemu programowi ...", nowe okno dialogowe zostanie otwarte.Wybierz programy lub aplikacje, dla których otrzymujesz wyjątek od gniazda i kliknij przycisk "Dodaj". enter image description here

  6. Kliknij OK i zrestartuj urządzenie.

  7. Spróbuj uruchomić aplikację (która ma wyjątek) z prawami administratora.

Mam nadzieję, że to pomoże.

Peace,

Sunny Makode

1

Jest to błąd, który jest zwracany, gdy Zapora systemu Windows blokuje port (wychodzących). Mamy ścisły serwer WWW, więc wychodzące porty są domyślnie blokowane. Wszystko, co musiałem zrobić, to stworzyć regułę zezwalającą na numer portu TCP w wf.msc.

Powiązane problemy