Note that there are some explanatory texts on larger screens.

plurals
  1. POPython - Asyncore (client) socket - Can not determaine connection status
    primarykey
    data
    text
    <p>For some reason, <code>self.connected</code> of the <code>asyncore.dispatcher</code> class doesn't consider my socket to be connected on the client side. The server side sees the socket as connected and treats it as such, but the client doesn't know if it's connected or not and <code>handle_connect</code> doesn't "proc", so i can't use a overridden version of it to check if the socket is connected either.</p> <p>Any thoughts on this code why it ain't working:</p> <pre><code>#!/usr/bin/python # -*- coding: iso-8859-15 -*- import asyncore from threading import * from socket import * from time import sleep from os import _exit from logger import * from config import * class logDispatcher(asyncore.dispatcher): def __init__(self, config=None): self.inbuffer = '' self.buffer = '' self.lockedbuffer = False self.is_writable = False asyncore.dispatcher.__init__(self) #Thread.__init__(self) self.create_socket(AF_INET, SOCK_STREAM) #self.is_writable = True #self.start() def compare(self, obj, otherobj): return (str(obj).lower() == str(otherobj).lower()[:len(str(obj))]) def _in(self, obj, otherobj): return (str(obj).lower() in str(otherobj).lower()) def parse(self): if self.inbuffer[-2:] != '\r\n': return False self.lockedbuffer = True self.inbuffer = '' self.lockedbuffer = False def readable(self): return True def handle_connect(self): log('Connected to ' + str(server), 'SOCK_CORE') def handle_close(self): self.close() def handle_read(self): data = self.recv(8192) while self.lockedbuffer: sleep(0.01) self.inbuffer += data def writable(self): return (len(self.buffer) &gt; 0) def handle_write(self): while self.is_writable: sent = self.send(self.buffer) sleep(1) self.buffer = self.buffer[sent:] if len(self.buffer) &lt;= 0: self.is_writable = False sleep(0.01) def _send(self, what): self.buffer += what + '\r\n' self.is_writable = True def handle_error(self): log('Error, closing socket!', 'SOCK_CORE') self.close() def run(self): log('Log socket engine initating', 'SOCK_CORE') self.connect((server, server_port)) print self.connected sleep(3) print self.connected class start(Thread): def __init__(self): Thread.__init__(self) self.start() def run(self): asyncore.loop(0.1) start() logDisp = logDispatcher() logDisp.run() </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload