Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top
import socket,time
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('',0))
port=s.getsockname()[1]
s.setblocking(0)
lines=[]
while True:
    try:
        data, addr = s.recvfrom(1024)
        if addr not in clients:
            clients.append(addr)

        if not lines:
            for client in clients:
                s.sendto(lines, client)
    except:
        pass
s.close()

I have paint application, in which the server sends the co-ordinates to a set of clients. I use the above code for sending, launching on a separate thread. This sends data to each client sequentially. This will cause a delay to the clients at the end of the list. Launching a separate thread for each client has scalability issues. Is there is scalabe way to write the above code maybe using async.io?

share|improve this question
    
Why the downvote? – Abhishek Bhatia Mar 17 at 19:29
    
I rolled back your changes. Editing the question after it's been answered is against the Code Review chapter, because it invalidates the review. See the codereview.stackexchange.com/help/someone-answers for what you should and shouldn't do. – vnp Mar 17 at 21:33

You cannot use recvfrom with a TCP socket (SOCK_STREAM). You don't see the error, because of your wrong exception handling. Never ignore all exceptions! Don't write your own server, use the appropriate interface from asyncio.

share|improve this answer
    
It should be recvinstead? Which interface are talking about, please tell. – Abhishek Bhatia Mar 17 at 18:44
    
What do you want? – Daniel Mar 17 at 18:58
    
I want it to send data to all clients asynchronously. – Abhishek Bhatia Mar 17 at 19:08

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.