title: python udp client time out machinsm
body: <p>My client socket would suspend in receving data if the rand number generated in Server socket less than 4. I need to set up time out mechanism to allow client socket detect there is "time out" and then it would continue send message.
  After I run the server socket and then the client socket, an error message showed below: </p>
  
  <pre><code>Traceback (most recent call last):
  File "E:\Studying\Python workspace\Client\src\Client.py", line 34, in &lt;module&gt;
  data , addr = client.recvfrom(1024)
  socket.timeout: timed out
  </code></pre>
  
  <p>Server Socket:</p>
  
  <pre><code>import random
  from socket import *
  serverSocket = socket(AF_INET , SOCK_DGRAM)
  serverSocket.bind(('', 15000))
  
  while True:
  
  rand = random.randint(0, 10)
  message , address = serverSocket.recvfrom (1024)
  message = message.upper()
  print("received message: ", message)
  print("echo to address: ", address)
  print(rand)
  
  if rand &lt; 4:
      continue
  print("Sending message: ", message)
  serverSocket.sendto(message, address)
  </code></pre>
  
  <p>Client Socket</p>
  
  <pre><code>import socket
  
  UDP_IP = "127.0.0.1"
  RPORT = 15000
  MESSAGE = "ping"
  
  print("UDP target IP: ", UDP_IP)
  print("UDP target port: ", RPORT)
  print("message going to send: ", MESSAGE)
  
  client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  
  i=1
  
  while True:
    try:
  
      if(i&lt;11): 
          client.sendto(MESSAGE.encode('utf_8'),(UDP_IP, RPORT))
          print("sending message: ", MESSAGE)
          print(i)
          i=i+1
          client.settimeout(2)
  
          data , addr = client.recvfrom(1024)
          print("received echo: ", data)
          print("received at: " , addr )
  
    finally:
      print("closing socket")
      client.close()
  </code></pre>