Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    socket.error

    Scheduled Pinned Locked Moved Pymakr
    4 Posts 3 Posters 56 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • I Offline
      Ibrahim Salim Omari
      last edited by

      Greetings,
      there seems to be no socket.error nor socket.OSError. How can I trap an error seeing that the socket library has no socket.error clause?

      here's my sample snippet:

      while True:
          msg = input('Enter message to send : ')
      
          try :
              # Set the whole string and convert encode the string to bytes
              s.sendto(str.encode(msg), (host, port))
      
              # receive data from client (data, addr)
              d = s.recvfrom(1024)
              reply = d[0]
              addr = d[1]
      
              print('Server reply : ' + str(bytes.decode(reply)))  # convert reply to string
          except socket.error:
              print('Error Code : ' + str(msg[0]) + ' Message ' + str(msg[1]))
              sys.exit()
      
      
      

      and the error is:

      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "/lib/udpClient.py", line 32, in <module>
      AttributeError: 'module' object has no attribute 'error'
      
      

      The "except socket.error" is the error line

      thanks
      omari

      M 1 Reply Last reply Reply Quote 0
      • G Offline
        Gijs
        last edited by

        For me, it works if I use it like this (perhaps you are importing usocket instead of socket?):

        from network import WLAN
        import time
        import socket
        import machine
        import sys
        wlan = WLAN()
        wlan.mode(WLAN.STA)
        wlan.connect(ssid="",auth=(WLAN.WPA2, "#"))
        print("connecting.",end ='')
        while not wlan.isconnected():
            print(".",end='')
            time.sleep(1)
        print("connected")
        print("WiFi connection established")
        
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        
        while True:
            msg = 'Enter message to send : '
        
            try :
                # Set the whole string and convert encode the string to bytes
                s.sendto(str.encode(msg), ('192.168.4.4', 80))
        
                # receive data from client (data, addr)
                d = s.recvfrom(1024)
                reply = d[0]
                addr = d[1]
        
                print('Server reply : ' + str(bytes.decode(reply)))  # convert reply to string
            except socket.error:
                print('Error Code : ' + str(msg[0]) + ' Message ' + str(msg[1]))
                sys.exit()
        
        1 Reply Last reply Reply Quote 1
        • I Offline
          Ibrahim Salim Omari
          last edited by

          Which board are you using? I'm using the expressif esp32-wrover-b.
          Your code is no different than mine. Even if I enter it line by line in pymakr repl, I still get an error on: except socket.error.
          From the pymakr prompt, there is no socket.error nor socket.socket.error routine. And yes, I'm importing socket not usocket although I tried it with usocket and got the same error.

          The code runs fine as long as there are no errors at which time the socket.error routine is called.

          1 Reply Last reply Reply Quote 0
          • M Offline
            MichaelWojcik @Ibrahim Salim Omari
            last edited by

            @Ibrahim-Salim-Omari

            The usocket implementation does not include an form of custom errors. Instead it throws in instance of OSError

            instead of:

            except socket.error:
            

            try

            except OSError:
            
            1 Reply Last reply Reply Quote 0

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better 💗

            Register Login
            • 1 / 1
            • First post
              Last post

            Pycom on Twitter

            Pycom