Changeset 47:7af364e37b1d in livinglogic.python.tipimaid

Show
Ignore:
Timestamp:
12/22/08 15:10:03 (10 years ago)
Author:
Nikolas Tautenhahn <nik@…>
Branch:
default
Message:

test with signal.SIGALRM to find out whether we still have a connection

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • liaalh_sender.py

    r46 r47  
    1 import sys, socket, select 
     1import sys, socket, select, signal 
    22 
    33def intify(s, defaultint=0): 
     
    1313        self.backupport = backupport 
    1414        self.stream = stream 
     15        self.create_socket() 
     16        signal.signal(signal.SIGALRM, self.timeout) 
    1517 
    1618    def readlines(self): 
     
    2729            yield line 
    2830 
     31    def create_socket(self): 
     32        if self.s is None: 
     33            for (af, socktype, proto, canonname, sa) in socket.getaddrinfo(self.ip, self.port, socket.AF_UNSPEC, socket.SOCK_STREAM): 
     34                try: 
     35                    s = socket.socket(af, socktype, proto) 
     36                except socket.error, msg: 
     37                    s = None 
     38                    continue 
     39                try: 
     40                    s.connect(sa) 
     41                except socket.error, exc: 
     42                    s.close() 
     43                    s = None 
     44                    continue 
     45                break 
     46            self.s = s 
     47 
     48    def timeout(self, signum, frame): 
     49        print signum, frame 
     50 
    2951    def send(self): 
    30         for (af, socktype, proto, canonname, sa) in socket.getaddrinfo(self.ip, self.port, socket.AF_UNSPEC, socket.SOCK_STREAM): 
    31             try: 
    32                 s = socket.socket(af, socktype, proto) 
    33             except socket.error, msg: 
    34                 s = None 
    35                 continue 
    36             try: 
    37                 s.connect(sa) 
    38             except socket.error, msg: 
    39                 s.close() 
    40                 s = None 
    41                 continue 
    42             break 
    43         if s is None: 
    44             sys.stderr.write("Could not open socket\n") 
    45             sys.exit(1) 
    4652        for line in self.readlines(): 
    4753            (l, t) = (len(line), 0) 
    4854            while t < l: 
    49                 t += s.send(line[t:]) 
     55                t += self.s.send(line[t:]) 
     56                signal.alarm(3) 
     57                print self.s.recv(1024) 
     58                signal.alarm(0) 
    5059        s.close() 
    5160