<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.twig.es/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.twig.es/index.php?action=history&amp;feed=atom&amp;title=Non_blocking_sockets</id>
		<title>Non blocking sockets - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.twig.es/index.php?action=history&amp;feed=atom&amp;title=Non_blocking_sockets"/>
		<link rel="alternate" type="text/html" href="https://wiki.twig.es/index.php?title=Non_blocking_sockets&amp;action=history"/>
		<updated>2026-05-06T14:04:00Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.0</generator>

	<entry>
		<id>https://wiki.twig.es/index.php?title=Non_blocking_sockets&amp;diff=4887&amp;oldid=prev</id>
		<title>George2: Created page with &quot;&lt;source lang=&quot;python&quot;&gt; #Blocking vs Non Blocking Sockets #Blocking stops #Non Blocking runs in the background  &quot;&quot;&quot; https://docs.python.org/3.8/howto/sockets.html#non-blocking-...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.twig.es/index.php?title=Non_blocking_sockets&amp;diff=4887&amp;oldid=prev"/>
				<updated>2022-01-14T22:53:02Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt; #Blocking vs Non Blocking Sockets #Blocking stops #Non Blocking runs in the background  &amp;quot;&amp;quot;&amp;quot; https://docs.python.org/3.8/howto/sockets.html#non-blocking-...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#Blocking vs Non Blocking Sockets&lt;br /&gt;
#Blocking stops&lt;br /&gt;
#Non Blocking runs in the background&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
https://docs.python.org/3.8/howto/sockets.html#non-blocking-sockets&lt;br /&gt;
ready_to_read, ready_to_write, in_error = \&lt;br /&gt;
               select.select(&lt;br /&gt;
                  potential_readers,&lt;br /&gt;
                  potential_writers,&lt;br /&gt;
                  potential_errs,&lt;br /&gt;
                  timeout)&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
#Imports&lt;br /&gt;
import logging&lt;br /&gt;
import socket&lt;br /&gt;
import select&lt;br /&gt;
&lt;br /&gt;
logging.basicConfig(format='%(levelname)s - %(asctime)s: %(message)s',datefmt='%H:%M:%S', level=logging.DEBUG)&lt;br /&gt;
&lt;br /&gt;
#Blocking socket example&lt;br /&gt;
def create_blocking(host,ip):&lt;br /&gt;
    logging.info('Blocking - creating socket')&lt;br /&gt;
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)&lt;br /&gt;
&lt;br /&gt;
    logging.info('Blocking - connecting')&lt;br /&gt;
    s.connect((host,ip))&lt;br /&gt;
&lt;br /&gt;
    logging.info('Blocking - connected')&lt;br /&gt;
    logging.info('Blocking - sending...')&lt;br /&gt;
    s.send(b'hello\r\n')&lt;br /&gt;
&lt;br /&gt;
    logging.info('Blocking - waiting...')&lt;br /&gt;
    data = s.recv(1024)&lt;br /&gt;
    logging.info(f'Blocking - data= {len(data)}')&lt;br /&gt;
    logging.info('Blocking - closing...')&lt;br /&gt;
    s.close()&lt;br /&gt;
&lt;br /&gt;
#Non Blocking socket example&lt;br /&gt;
def create_nonblocking(host,port):&lt;br /&gt;
    logging.info('Non Blocking - creating socket')&lt;br /&gt;
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)&lt;br /&gt;
&lt;br /&gt;
    logging.info('Non Blocking - connecting')&lt;br /&gt;
    ret = s.connect_ex((host,port)) #BLOCKING&lt;br /&gt;
&lt;br /&gt;
    if ret != 0:&lt;br /&gt;
        logging.info('Non Blocking - failed to connect!')&lt;br /&gt;
        return&lt;br /&gt;
    &lt;br /&gt;
    logging.info('Non Blocking - connected!')&lt;br /&gt;
    s.setblocking(False)&lt;br /&gt;
&lt;br /&gt;
    inputs = [s]&lt;br /&gt;
    outputs = [s]&lt;br /&gt;
    while inputs:&lt;br /&gt;
        logging.info('Non Blocking - waiting...')&lt;br /&gt;
        readable,writable,exceptional = select.select(inputs,outputs,inputs,0.5)&lt;br /&gt;
&lt;br /&gt;
        for s in writable:&lt;br /&gt;
            logging.info('Non Blocking - sending...')&lt;br /&gt;
            data = s.send(b'hello\r\n')&lt;br /&gt;
            logging.info(f'Non Blocking - sent: {data}')&lt;br /&gt;
            outputs.remove(s)&lt;br /&gt;
&lt;br /&gt;
        for s in readable:&lt;br /&gt;
            logging.info(f'Non Blocking - reading...')&lt;br /&gt;
            data = s.recv(1024)&lt;br /&gt;
            logging.info(f'Non Blocking - data: {len(data)}')&lt;br /&gt;
            logging.info(f'Non Blocking - closing...')&lt;br /&gt;
            s.close()&lt;br /&gt;
            inputs.remove(s)&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
        for s in exceptional:&lt;br /&gt;
            logging.info(f'Non Blocking - error')&lt;br /&gt;
            inputs.remove(s)&lt;br /&gt;
            outputs.remove(s)&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Main &lt;br /&gt;
def main():&lt;br /&gt;
    #create_blocking('voidrealms.com',80)&lt;br /&gt;
    create_nonblocking('voidrealms.com',80)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>George2</name></author>	</entry>

	</feed>