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

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
jacoblange
User
Beiträge: 3
Registriert: Freitag 27. Januar 2023, 12:28

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.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
jacoblange
User
Beiträge: 3
Registriert: Freitag 27. Januar 2023, 12:28

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.
jacoblange
User
Beiträge: 3
Registriert: Freitag 27. Januar 2023, 12:28

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 :-(
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

„Ausführen als Administrator“ ist ein Windows Konzept. Zb kannst du das auf CMD.EXE anwenden, und damit dann Python (und dein Skript) starten.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Antworten