Advertisement
toko214

chat server

Oct 4th, 2016
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.01 KB | None | 0 0
  1. import socket
  2. import threading
  3. import thread
  4. from threading import Lock
  5. import time
  6.  
  7. HOST,PORT=('192.168.1.106',8200)
  8. listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  9. listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  10. listen_socket.bind((HOST, PORT))
  11. listen_socket.listen(222)
  12. list_Clients=[]
  13. list_th=[]
  14. mutex=Lock()
  15.  
  16. def main():
  17.     thread.start_new_thread(Accept_Socket,())
  18.     while 1:
  19.         msg=raw_input()
  20.         print("you wrote: "+msg)
  21.         BrodCast(("Admin Sent: ",msg))
  22.  
  23.  
  24. def Accept_Socket():
  25.     while True:
  26.         client_socket,address=listen_socket.accept()
  27.         list_Clients.append((client_socket,address[0]))
  28.         print(str(address[0])+" Have Joined Us")
  29.         thread.start_new_thread(Client_Handle,(client_socket,address[0]))
  30.         BrodCast((address[0]," Have Joined Us"),client_socket)
  31.  
  32.  
  33.  
  34. def Client_Handle(client_socket,client_name):
  35.     while True:
  36.         try:
  37.             msg=client_socket.recv(1024)
  38.             print client_name+" Sent: "+msg
  39.             BrodCast((client_name, " Sent: "+msg),client_socket)
  40.         except socket.error:
  41.             print(client_name+" has left us")
  42.             BrodCast((client_name," has left us"),client_socket)
  43.             client_socket.close()
  44.             list_Clients.remove((client_socket,client_name))
  45.             break
  46.  
  47.  
  48. def BrodCast(msg,client_socket=None):
  49.     mutex.acquire()
  50.     if len(list_Clients)==0:
  51.         mutex.release()
  52.         pass
  53.     else:
  54.         for i in xrange(0,len(list_Clients)):
  55.             try:
  56.                 if list_Clients[i][0]!=client_socket:
  57.                     list_Clients[i][0].send(msg[0]+msg[1])
  58.             except socket.error:
  59.                 list_Clients[i][0].close()
  60.                 list_Clients.remove((list_Clients[i][0],msg[0]))
  61.                 mutex.release()
  62.                 break
  63.             except Exception:
  64.                 mutex.release()
  65.                 print "idk"
  66.     mutex.release()
  67. if __name__ == '__main__':
  68.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement