server.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import socket
  2. import sys
  3. # save request code, make var for tcp socket port
  4. requestcode = sys.argv[1]
  5. rport = 0
  6. # start udp socket, declare tcp socket var
  7. sock = socket(AF_INET, SOCK_DGRAM)
  8. tsock = None
  9. # get udp socket port from system, save in a var
  10. sock.bind('', 0)
  11. nport = sock.getsockname()[1]
  12. # make flag to see if we are waiting for a confirmation or a new connection
  13. newConn = true
  14. # listen for msgs
  15. while True:
  16. message, clientAddress = serverSocket.recvfrom(1024)
  17. message = message.decode()
  18. # match, create tcp socket
  19. if (message == requestcode && newConn):
  20. tsock = (socket.AF_INET, socket.SOCK_STREAM)
  21. tsock.bind('', 0)
  22. rport = tsock.getsockname()[1]
  23. print("SERVER_TCP_PORT=", rport, sep="")
  24. sock.sendto(rport.encode(), clientAddress) # send new socket port to client
  25. newConn = false
  26. # now put logic for TCP socket behaviour
  27. while True:
  28. tempsock, addr = serverSocket.accept()
  29. msg = tempsock.recv(1024).decode()
  30. print("SERVER_RCV_MSG='", msg, "'", sep="")
  31. reply = msg[::-1]
  32. tempsock.send(reply.encode())
  33. tempsock.close()
  34. # match, send a confirmation msg
  35. else if (newConn == false && message == rport):
  36. sock.sendto("correct".encode(), clientAddress)
  37. # client is trying to verify the code, but sucks at life
  38. else if (newConn == false):
  39. # do nothing
  40. # client f*ed up, reset all the things
  41. else:
  42. newConn = true
  43. tsock.close()