Advertisement
Guest User

Untitled

a guest
Nov 6th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. import sys, socket, thread
  2.  
  3.  
  4. class Korisnik():
  5. def __init__(self, ime, prezime, korime, lozinka, adresa):
  6. self.ime, self.prezime, self.korime, self.lozinka, self.adresa = ime, prezime, korime, lozinka, adresa
  7. self.razgovori = {}
  8.  
  9. def dodajporaka(self, poraka, korisnik1):
  10. if korisnik1 in self.razgovori:
  11. self.razgovori[korisnik1] += [poraka]
  12. else:
  13. self.razgovori[korisnik1] = []
  14. self.razgovori[korisnik1] += [poraka]
  15.  
  16.  
  17. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  18. MAX = 65535
  19. PORT = 12345
  20.  
  21.  
  22. def login(s):
  23. username = raw_input("Username:")
  24. password = raw_input("Password:")
  25. s.sendto("Login|" + username + "|" + password, ('127.0.0.1', PORT))
  26. #s.settimeout(1.0)
  27. data, adress = s.recvfrom(MAX)
  28. if data == "200":
  29. print "Log in successful!"
  30. thread.start_new_thread(listenformessages, (s,))
  31. sendmessage(s)
  32. else:
  33. print "Username or Password is incorrect. Please try again"
  34. login(s)
  35.  
  36. def register(s):
  37. firstname = raw_input("Firstname:")
  38. lastname = raw_input("Lastname:")
  39. username = raw_input("Username:")
  40. password = raw_input("Password:")
  41. s.sendto("Registration|" + firstname + "|" + lastname + "|" + username + "|" + password, ('127.0.0.1', PORT))
  42. #s.settimeout(1.0)
  43. print "register sent"
  44. data, adress = s.recvfrom(MAX)
  45. print "register received"
  46. if data == '200':
  47. print "Please log in to continue"
  48. login(s)
  49. elif data == '400':
  50. print "The username is already in use. Please try again"
  51. register(s)
  52.  
  53.  
  54. def listenformessages(s):
  55. while True:
  56. data, adress = s.recvfrom(MAX)
  57. print (data)
  58.  
  59. def sendmessage(s):
  60. while True:
  61. print "Send Message!"
  62. username = raw_input("To:")
  63. message = raw_input("Message:")
  64. s.sendto("Message|" + username + "|" + message, ('127.0.0.1', PORT))
  65.  
  66.  
  67. if sys.argv[1:] == ['client']:
  68. tip = raw_input("Registration | Login")
  69. if tip == "Registration":
  70. register(s)
  71. elif tip == "Login":
  72. login(s)
  73. elif sys.argv[1:] == ['server']:
  74. registrated = {}
  75. loggedin = {}
  76. s.bind(('127.0.0.1', PORT))
  77. while True:
  78. data, adress = s.recvfrom(MAX)
  79. tip = data.split("|")
  80. if tip[0] == "Registration":
  81. if tip[3] in registrated:
  82. s.sendto("400", adress)
  83. else:
  84. registrated[tip[3]] = Korisnik(tip[1], tip[2], tip[3], tip[4], adress)
  85. s.sendto("200", adress)
  86. elif tip[0] == "Login":
  87. if tip[1] in registrated:
  88. if registrated[tip[1]].lozinka == tip[2]:
  89. loggedin[tip[1]] = registrated[tip[1]]
  90. s.sendto("200", adress)
  91. else:
  92. s.sendto("400", adress)
  93. else:
  94. s.sendto("400", adress)
  95. elif tip[0] == "Message":
  96. if tip[1] in registrated:
  97. if tip[1] in loggedin:
  98. s.sendto(tip[2], loggedin[tip[1]].adresa)
  99. else:
  100. s.sendto("The user is not logged in", adress)
  101. else:
  102. s.sendto("The user does not exist", adress)
  103. else:
  104. print >> sys.stderr, 'usage: chat.py server|client'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement