Seite 1 von 1

PermissionError: [WinError 10013] Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässig

Verfasst: Freitag 27. Januar 2023, 12:45
von jacoblange
Hallo,

Hier eine verzweifelte Frage eines Python Anfängers. Ich habe zwar schon einiges in Java .Net und C++ programmiert, aber scheitere bei einer einfachen Sache in Python.

Ich will einen kleinen SIP Client in Python schreiben und bekomme leider schon die Demo nicht zum laufen wegen des folgenden Fehlers:

Code: Alles auswählen

PermissionError: [WinError 10013] Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässig
Hier noch das Programm selber (Die realen Zugangsdaten habe ich verständlicher weise rausgenommen):

Code: Alles auswählen

from pyVoIP.VoIP import VoIPPhone, InvalidStateError

def answer(call): # This will be your callback function for when you receive a phone call.
    try:
      call.answer()
      call.hangup()
    except InvalidStateError:
      pass
  
if __name__ == "__main__":
    phone=VoIPPhone("server", port, "username", "password", callCallback=answer, myIP="my ip", sipPort=port, rtpPortLow=lowPort, rtpPortHigh=highPort)
    phone.start()
    input('Press enter to disable the phone')
    phone.stop()
   
Als Betriebssystem nutze ich Windows 11 und habe Python 3.11.1 installiert.

Und aufgerufen habe ich das Skript einfach über die Konsole:

Code: Alles auswählen

python siptest.py
Traceback (most recent call last):
  File "D:\python\siptest.py", line 12, in <module>
    phone.start()
  File "C:\Users\jacob\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyVoIP\VoIP.py", line 656, in start
    self.sip.start()
  File "C:\Users\jacob\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyVoIP\SIP.py", line 947, in start
    self.s.bind((self.myIP, self.myPort))
PermissionError: [WinError 10013] Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässig
Und daher meine Frage, wie kann ich Python erlauben Sockets zu erstellen.

Re: PermissionError: [WinError 10013] Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässi

Verfasst: Freitag 27. Januar 2023, 12:48
von __deets__
Das ist ja kein Python Problem. Auch Java und .NET dürfen das nicht, wenn sie die gleichen Rechte haben. Du musst den Prozess privilegiert starten, als Admin. Oder tiefer in die Windows Rechtevergabe eintauchen.

Re: PermissionError: [WinError 10013] Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässi

Verfasst: Freitag 27. Januar 2023, 13:00
von jacoblange
Ja ich weiß, aber ich war es bisher gewohnt, das wenn ein Programm Netzwerkzugriff braucht, das es dann fragt, so das man diesen gewähren kann.

Aber dann werde ich das mal probieren das für die python.exe selbst zu setzten.

Re: PermissionError: [WinError 10013] Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässi

Verfasst: Freitag 27. Januar 2023, 13:09
von jacoblange
Ich glaube ich stehe gerade auf dem Schlauch, aber ich habe jetzt der python.exe in der Firewall erlaubt auf das Netzwerk zu zu greifen, aber leider ohne Erfolg :-(

Re: PermissionError: [WinError 10013] Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässi

Verfasst: Freitag 27. Januar 2023, 13:22
von __deets__
„Ausführen als Administrator“ ist ein Windows Konzept. Zb kannst du das auf CMD.EXE anwenden, und damit dann Python (und dein Skript) starten.

Re: PermissionError: [WinError 10013] Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässi

Verfasst: Freitag 27. Januar 2023, 13:31
von __deets__
Deine Code ist unvollständig, darum sehe ich nicht, welchen Port du benutzt. Aber auch Windows kennt priveligierte Ports. So wie Unix. https://answers.microsoft.com/en-us/win ... 52939d2f5d - das hat auch nix mit Firewalls zu tun.