<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2800.1476" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=901561010-16032005><FONT face=Arial 
size=2>Hello.</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial size=2>I ran the (Twisted) 
server code below and it accepts a client socket connection every&nbsp;1.3 
seconds. The&nbsp;equivalent&nbsp;Synchronous socket code accepts&nbsp;one every 
2 seconds. </FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial size=2>Can anyone here 
suggest any code&nbsp;improvements for&nbsp;my Twisted server to accept 
connections faster ?</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial size=2>I've include the 
Synchronous socket server code and the client generator code below as 
well.</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#0000ff size=2># 
==========================================================================================</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#0000ff size=2># 
Twisted server code</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#0000ff size=2># 
==========================================================================================</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#0000ff size=2>from 
twisted.protocols import basic<BR>from twisted.internet import reactor, 
protocol</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#0000ff size=2>import 
time</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV><SPAN 
class=901561010-16032005><FONT face=Arial size=2>
<DIV><BR><FONT color=#0000ff>class 
MyChat(basic.LineReceiver):<BR>&nbsp;&nbsp;&nbsp; def 
connectionMade(self):</FONT></DIV>
<DIV><FONT color=#0000ff></FONT>&nbsp;</DIV>
<DIV><FONT color=#0000ff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "Got a 
connection from&nbsp;on " + 
time.asctime()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
self.transport.write("Welcome. You are client number : 
")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print 
"Looping..."<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i in 
range(10000000):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
pass<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "Looping 
done."<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
self.transport.loseConnection()</FONT></DIV>
<DIV><BR><FONT color=#0000ff>&nbsp;&nbsp;&nbsp; def connectionLost(self, 
reason):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass<BR></FONT></DIV>
<DIV><FONT color=#0000ff>&nbsp;&nbsp;&nbsp; def lineReceived(self, 
line):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for c in 
self.factory.clients:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
c.message(line)</FONT></DIV>
<DIV><FONT color=#0000ff></FONT>&nbsp;</DIV>
<DIV><FONT color=#0000ff>&nbsp;&nbsp;&nbsp; def message(self, 
message):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
self.transport.write(message + '\n')</FONT></DIV>
<DIV><FONT color=#0000ff></FONT>&nbsp;</DIV>
<DIV><FONT color=#0000ff>&nbsp;&nbsp;&nbsp; def __init__ (self) 
:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.x = 
1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.duration = 60</FONT></DIV>
<DIV><FONT color=#0000ff></FONT>&nbsp;</DIV>
<DIV><FONT color=#0000ff>print "Starting Twisted Async 
Server"<BR>print</FONT></DIV>
<DIV><FONT color=#0000ff></FONT>&nbsp;</DIV>
<DIV><FONT color=#0000ff>factory = protocol.ServerFactory()<BR>factory.protocol 
= MyChat<BR>factory.clients = []</FONT></DIV>
<DIV><FONT color=#0000ff></FONT>&nbsp;</DIV>
<DIV><FONT 
color=#0000ff>reactor.listenTCP(7878,factory,10)<BR>reactor.run()<BR></FONT>&nbsp;&nbsp;&nbsp; 
</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#ff0000 size=2># 
=================================================================================</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#ff0000 size=2># 
Synchronous&nbsp;socket server code </FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#ff0000 size=2># 
=================================================================================</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#ff0000 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#ff0000 size=2>from 
socket import *<BR>import sys<BR>import time</FONT></SPAN></DIV>
<DIV><FONT color=#ff0000></FONT>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#ff0000 size=2>s = 
socket(AF_INET, SOCK_STREAM)<BR>s.bind(('', 
7878))<BR>s.listen(10)</FONT></SPAN></DIV>
<DIV><FONT color=#ff0000></FONT>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#ff0000 size=2>print 
'Login Server started on port 7878' </FONT></SPAN></DIV>
<DIV><FONT color=#ff0000></FONT>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#ff0000 size=2>x = 
1</FONT></SPAN></DIV>
<DIV><FONT color=#ff0000></FONT>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial size=2><BR><FONT 
color=#ff0000>while 1:<BR>&nbsp;&nbsp;&nbsp; client,addr = 
s.accept()<BR>&nbsp;&nbsp;&nbsp; print str(x) + ". Got a conection from " + 
str(addr) + " on " + time.asctime()<BR>&nbsp;&nbsp;&nbsp; print 
"Looping..."&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; for i in 
range(10000000):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
pass<BR>&nbsp;&nbsp;&nbsp; print "Loop done. Ready for 
connection..."<BR>&nbsp;&nbsp;&nbsp; print<BR>&nbsp;&nbsp;&nbsp; client.sendall 
("Welcome. You are client number : " + str(x))<BR>&nbsp;&nbsp;&nbsp; x += 
1</FONT></FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#0000ff size=2># 
=================================================================================</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#0000ff size=2># 
Socket client code</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT face=Arial color=#0000ff size=2># 
=================================================================================</FONT></SPAN></DIV>
<DIV><SPAN class=901561010-16032005><FONT 
color=#0000ff>&nbsp;</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2>from socket import *<BR>import 
sys<BR>import time</FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2>s = socket(AF_INET, 
SOCK_STREAM)</FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2>print 'Creating 20 clients...' 
</FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2>x = 1<BR>duration = 60<BR>for i in 
range(20):<BR>&nbsp;&nbsp;&nbsp; print "Client " + str(x) + "." + " connecting 
to localhost at " + time.asctime()<BR>&nbsp;&nbsp;&nbsp; s = socket(AF_INET, 
SOCK_STREAM)<BR>&nbsp;&nbsp;&nbsp; s.connect 
(("127.0.0.1",7878))<BR>&nbsp;&nbsp;&nbsp; print "Client Connected..." , 
time.asctime()<BR>&nbsp;&nbsp;&nbsp; 
s.sendall("Hello\r\n")<BR>&nbsp;&nbsp;&nbsp; data = 
s.recv(1024)<BR>&nbsp;&nbsp;&nbsp; print data<BR>&nbsp;&nbsp;&nbsp; x += 1 
<BR>&nbsp;&nbsp;&nbsp; s.close()</FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><FONT face=Arial size=2>Regards,<BR><SPAN 
class=901561010-16032005></SPAN>D<SPAN 
class=901561010-16032005>anny</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV></BODY></HTML>