OverviewFilesCommitsIssuesDocsReleasesPeers

cthuloid / LightArm / python / sockserv.py

67 lines · python ref:
import SocketServer, thread, signal, time, socket, random

starting_port = 1 + 1000 * random.randint(1, 9)
num_sockets = 5

class S(SocketServer.BaseRequestHandler):
  def handle(self):
    print self.request.getsockname(), 'connected to', self.client_address
    while 1:
      self.data = self.request.recv(1024)
      if not self.data:
        print self.request.getsockname(), 'disconnected from', self.client_address
        break
      # self.request is the TCP socket connected to the client
      print self.client_address, ':', self.data.strip()
      # just send back the same data, but upper-cased
      self.request.sendall(self.data.upper())
      print self.request.getsockname(), 'disconnected from', self.client_address
      return

print 'Starting listening to', num_sockets, 'at starting port', starting_port, '...'

def socket_serve(name, port):
  s = SocketServer.TCPServer(('', port), S)
  s.serve_forever()

threads = []

for port in range(starting_port, starting_port + num_sockets):
  threads.append(thread.start_new_thread(socket_serve, ('Thread Port ' + str(port), port)))

#print(threads)
#for thread in threads:
time.sleep(100) 



def sockopt(s):
  return s.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)

print 'finished\n'
'''s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setblocking(0)
print s.connect_ex(('10.0.0.123', starting_port))
print 'connecting'
now = time.time()
while time.time() - now < .1:
  print time.time() - now, sockopt(s)
  time.sleep(.01)

def send_sleep(s):
  print 'sending'
  s.send(b'ba')
  print sockopt(s)
  time.sleep(2)#print s.recv(1000)
  print sockopt(s)
  print 'sending'
  s.send(b'cde')
  print sockopt(s)
  print s.recv(1000)
  print sockopt(s)

send_sleep(s)

#signal.pause()
exit(0)'''