Guest User

udpchat

a guest
Jan 26th, 2018
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 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. data, adress = s.recvfrom(MAX)
  44. if data == '200':
  45. print "Please log in to continue"
  46. login(s)
  47. elif data == '400':
  48. print "The username is already in use. Please try again"
  49. register(s)
  50.  
  51.  
  52. def listenformessages(s):
  53. while True:
  54. data, adress = s.recvfrom(MAX)
  55. print (data)
  56.  
  57. def sendmessage(s):
  58. while True:
  59. print "Send Message!"
  60. username = raw_input("To:")
  61. message = raw_input("Message:")
  62. s.sendto("Message|" + username + "|" + message, ('127.0.0.1', PORT))
  63.  
  64.  
  65. if sys.argv[1:] == ['client']:
  66. tip = raw_input("Registration | Login")
  67. if tip == "Registration":
  68. register(s)
  69. elif tip == "Login":
  70. login(s)
  71. elif sys.argv[1:] == ['server']:
  72. registrated = {}
  73. loggedin = {}
  74. s.bind(('127.0.0.1', PORT))
  75. while True:
  76. data, adress = s.recvfrom(MAX)
  77. tip = data.split("|")
  78. if tip[0] == "Registration":
  79. if tip[3] in registrated:
  80. s.sendto("400", adress)
  81. else:
  82. registrated[tip[3]] = Korisnik(tip[1], tip[2], tip[3], tip[4], adress)
  83. s.sendto("200", adress)
  84. elif tip[0] == "Login":
  85. if tip[1] in registrated:
  86. if registrated[tip[1]].lozinka == tip[2]:
  87. loggedin[tip[1]] = registrated[tip[1]]
  88. s.sendto("200", adress)
  89. else:
  90. s.sendto("400", adress)
  91. else:
  92. s.sendto("400", adress)
  93. elif tip[0] == "Message":
  94. if tip[1] in registrated:
  95. if tip[1] in loggedin:
  96. s.sendto(tip[2], loggedin[tip[1]].adresa)
  97. else:
  98. s.sendto("The user is not logged in", adress)
  99. else:
  100. s.sendto("The user does not exist", adress)
  101. else:
  102. print >> sys.stderr, 'usage: chat.py server|client'
Add Comment
Please, Sign In to add comment