Changeset 77 for trigger/CommSocket.py


Ignore:
Timestamp:
06/30/09 11:09:39 (15 years ago)
Author:
rissim
Message:
trigger: gui added, interface modified
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trigger/CommSocket.py

    r52 r77  
    2020import time
    2121BUFSIZ = 1024
    22 
    23 
     22class Sender(threading.Thread):
     23    """ Sends the messages """
     24    outputs = []
     25    oldmessage=''
     26     
     27    def run(self):
     28        running = 1
     29        while running:
     30            time.sleep(0.001)
     31            if(self.oldmessage!=GlobalVariables.ServerMessage):
     32                self.oldmessage=GlobalVariables.ServerMessage
     33             
     34                for o in self.outputs:
     35                    # o.send(msg)
     36                    #print "sending (glob): ",GlobalVariables.ServerMessage,"\n"
     37                    send(o,GlobalVariables.ServerMessage )
     38                if(GlobalVariables.UserInput[1:]=='exit' or GlobalVariables.UserInput[1:]=='EXIT'):
     39                    running=0
     40             
     41
     42
     43         
    2444class CommServer(threading.Thread):
    2545    """ Simple  server using select """
    26    
     46    oldmessage=''
     47    sender=Sender()
    2748    def __init__(self, port=3490, backlog=5):
    2849        self.clients = 0
     
    3657        print 'SERVER: Listening to port',port,'...'
    3758        self.server.listen(backlog)
     59        self.sender.start()
    3860        # Trap keyboard interrupts
    3961        #signal.signal(signal.SIGINT, self.sighandler)
    4062        threading.Thread.__init__(self)
    4163    #def sighandler(self, signum, frame):
    42     #    if(GlobalVariables.UserInput=='exit' or GlobalVariables.UserInput=='EXIT'):
     64    #    if(GlobalVariables.UserInput[1:]=='exit' or GlobalVariables.UserInput[1:]=='EXIT'):
    4365    #        running=0
    4466    #        for o in self.outputs:
     
    7193
    7294        while running:
    73             time.sleep(0.01)
    74             if(GlobalVariables.UserInput=='exit' or GlobalVariables.UserInput=='EXIT'):
     95            time.sleep(0.001)
     96            #if(self.oldmessage!=GlobalVariables.ServerMessage):
     97            #    self.oldmessage=GlobalVariables.ServerMessage
     98            #    for o in self.outputs:
     99            #        # o.send(msg)
     100            #        #print "sending (glob): ",GlobalVariables.ServerMessage,"\n"
     101            #        send(o,GlobalVariables.ServerMessage )
     102            if(GlobalVariables.UserInput[1:]=='exit' or GlobalVariables.UserInput[1:]=='EXIT'):
    75103                running=0
    76104           
     
    87115                    # handle the server socket
    88116                    client, address = self.server.accept()
    89                     print 'SERVER: got connection %d from %s' % (client.fileno(), address)
     117                    #print 'SERVER: got connection %d from %s' % (client.fileno(), address)
     118                    GlobalVariables.ServerMessage = 'SERVER: got connection %d from %s' %( client.fileno(), address)+"\n"
    90119                    # Read the login name
    91                     cname = receive(client).split('NAME: ')[1]
    92                    
     120                    cname="TESTUSER"
     121                    #cname = receive(client).split('NAME: ')[1]
     122                    #print cname
    93123                    # Compute client name and send back
    94124                    self.clients += 1
    95                     send(client, 'FROM SERVER: CLIENT: ' + str(address[0]))
     125                    #send(client, 'FROM SERVER: CLIENT: ' + str(address[0]))
     126                    #send(client,"test");
     127                    #send(client,"test2");
     128                   
    96129                    inputs.append(client)
    97130
     
    99132                    # Send joining information to other clients
    100133                    msg = '\nFROM SERVER: (Connected: New client (%d) from %s)' % (self.clients, self.getname(client))
    101                     for o in self.outputs:
    102                         # o.send(msg)
    103                         send(o, msg)
    104                    
     134                    GlobalVariables.ServerMessage=msg;
     135                    time.sleep(0.001)
     136                    #print "appending ", client
    105137                    self.outputs.append(client)
    106 
     138                    self.sender.outputs=self.outputs
    107139                #elif s == sys.stdin:
    108140                    # handle standard input
     
    119151                    # handle all other sockets
    120152                    try:
    121                         # data = s.recv(BUFSIZ)
    122                         data = receive(s)
     153                        data = s.recv(BUFSIZ)
     154                       
     155                        #data = receive(s)
     156                        #print data
    123157                        if data:
     158                            GlobalVariables.counter += 1
     159                            GlobalVariables.counter %= 10
     160                            data = str(GlobalVariables.counter)+data
    124161                            # Send as new client's message...
    125162                            msg = 'SERVER: You sent: >> ' + data
     163                            msg+="\n"
    126164                            GlobalVariables.UserInput=data
    127                             print "SERVER: recv data: "+data
    128                             for o in self.outputs:
    129                                 send(o, msg)
    130                             if(GlobalVariables.UserInput=='exit' or GlobalVariables.UserInput=='EXIT'):
     165                            #print "SERVER: recv data: "+data
     166                            #print "msg is: ",msg
     167
     168                            #for o in self.outputs:
     169                                #msg="TSTSTS"
     170                             #   print "sending ",msg," to ",o
     171                               
     172                              #  send(o, msg)
     173                            if(GlobalVariables.UserInput[1:]=='exit' or GlobalVariables.UserInput[1:]=='EXIT'):
    131174                                running=0
    132175                                # Send data to all except ourselves
    133176                                                           
    134177                        else:
    135                             print 'SERVER: %d hung up' % s.fileno()
     178                            GlobalVariables.ServerMessage ='SERVER: %d hung up' % s.fileno()
    136179                            self.clients -= 1
    137180                            s.close()
    138181                            inputs.remove(s)
    139182                            self.outputs.remove(s)
    140 
     183                            self.sender.outputs=self.outputs
    141184                            # Send client leaving information to others
    142185                            msg = 'SERVER: \n(Hung up: Client from %s)' % self.getname(s)
    143                             for o in self.outputs:
     186                            #for o in self.outputs:
    144187                                # o.send(msg)
    145                                 send(o, msg)
     188                                # send(o, msg)
    146189                               
    147190                    except socket.error, e:
     
    151194                       
    152195
    153         print 'SERVER: Shutting down server...'
     196        GlobalVariables.ServerMessage ='SERVER: Shutting down server...'
     197       
    154198        # Close existing client sockets
    155199        for o in self.outputs:
Note: See TracChangeset for help on using the changeset viewer.