Advertisement
aex-

Simple Thread Limiter (TCP Socket)

Feb 23rd, 2018
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.99 KB | None | 0 0
  1. import os
  2. import sys
  3. import socket
  4. import threading
  5. def puts(string):
  6.     sys.stdout.write(string + "\n")
  7.  
  8. recv_limit = 128
  9. thread_limit = 100
  10. thread_start = 0
  11.  
  12. def client(conn, addr):
  13.     global thread_start
  14.     try:
  15.         TypeData = conn.recv(recv_limit)
  16.         if (len(TypeData) > recv_limit):
  17.             puts("Client sent more data than recv_limit.")
  18.         else:
  19.             puts("OK")
  20.     except Exception:
  21.         thread_start -= 1
  22.         puts("client disconnected")
  23.         if (conn):
  24.             conn.close()
  25.  
  26. sock = socket.socket()
  27. try:
  28.     sock.bind("127.0.0.1", 8000)
  29. except socket.error:
  30.     puts("Addr already in use")
  31.  
  32. sock.listen(0)
  33.  
  34. while (recv_limit):
  35.     conn, addr = sock.accept()
  36.     puts("conn recv [%s:%s]" % (addr[0], addr[1]))
  37.     if (thread_start == thread_limit):
  38.         conn.close()
  39.         puts("Client exceeded maximum thread limit.")
  40.  
  41.     else:    
  42.         thread = threading.Thread(target=client, args=(conn,addr,)).start()
  43.         thread_start +=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement