<br><br>Hello everyone.&nbsp; Try as I might I cannot get a very simple example to
run.&nbsp; I basically want a server that accepts connections, and
periodically issues messages to all clients.&nbsp; The docs for twisted.word
says things are in flux so I would rather avoid that and just use a
LineReceiver.&nbsp; However right now I can&#39;t get anything to work.<br>
<br>I start the server and it seems to be happy to sit around and
accept connections.&nbsp; However when I run the client it quits (without
saying why) and no connection is made.&nbsp; Any help would be very much
appreciated.&nbsp; Here&#39;s the code, log messages below that.&nbsp; Thanks!<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kevin<br><br>##############################<div id="1euf" class="ArwC7c ckChnd">####################<br># server.py<br>##################################################<br>
import sys&nbsp; <br>from twisted.internet.protocol import log<br>from twisted.internet.protocol import Factory<br>from twisted.internet.protocol import Protocol<br>from twisted.internet import reactor<br><br>class Echo(Protocol):<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; def connectionMade(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.stderr.write(&#39;Server connectionMade\n&#39;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.factory.numProtocols = self.factory.numProtocols+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if self.factory.numProtocols &gt; 100:<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.transport.write(&quot;Too many connections, try later&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.transport.loseConnection()<br><br>&nbsp;&nbsp;&nbsp; def connectionLost(self, reason):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.stderr.write(&#39;Server connectionLost\n&#39;)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.factory.numProtocols = self.factory.numProtocols-1<br><br>&nbsp;&nbsp;&nbsp; def dataReceived(self, data):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.stderr.write(&#39;Server dataReceived\n&#39;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.transport.write(data)<br><br><br>factory = Factory()<br>

factory.protocol = Echo<br><br>log.startLogging(file(&#39;server.log&#39;, &#39;w&#39;))<br><br>sys.stderr.write(&#39;Server starting...\n&#39;)<br># 8007 is the port you want to run under. Choose something &gt;1024<br>reactor.listenTCP(9010, factory)<br>

reactor.run()<br>sys.stderr.write(&#39;Server done\n&#39;)<br><br><br><br><br><br>##################################################<br>
# client.py<br>
##################################################<br>

import sys&nbsp; <br>from twisted.internet import reactor<br>from twisted.internet.protocol import log<br>from twisted.internet.protocol import Protocol<br>from twisted.internet.protocol import ClientCreator<br>from twisted.internet.protocol import ClientFactory<br>

<br>class Greeter(Protocol):<br>&nbsp;&nbsp;&nbsp; def sendMessage(self, msg):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.stderr.write(&#39;Client sendMessage\n&#39;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.transport.write(&quot;MESSAGE %s\n&quot; % msg)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>class GreeterClientFactory(ClientFactory):<br>

&nbsp;&nbsp;&nbsp; def startedConnecting(self, connector):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.stderr.write(&#39;Client startedConnecting\n&#39;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; def buildProtocol(self, addr):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.stderr.write(&#39;Client connected\n&#39;)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g = Greeter()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reactor.callLater(1, g.sendMessage, &quot;This is sent in 1 second&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reactor.callLater(2, g.sendMessage, &quot;This is sent in 2 second&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reactor.callLater(3, g.sendMessage, &quot;This is sent in 3 second&quot;)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Greeter()<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; def clientConnectionLost(self, connector, reason):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.stderr.write(&#39;Client connectionLost: &#39; + reason + &#39;\n&#39;)<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; def clientConnectionFailed(self, connector, reason):<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.stderr.write(&#39;Client connectionFailed: &#39; + reason + &#39;\n&#39;)<br><br><br>log.startLogging(file(&#39;client.log&#39;, &#39;w&#39;))<br><br>sys.stderr.write(&#39;Client connecting...\n&#39;)<br><br>
f = GreeterClientFactory()<br>
reactor.connectTCP(&quot;localhost&quot;, 9010, f)<br><br>sys.stderr.write(&#39;Client done\n&#39;)<br><br><br><br><br>##################################################<br>
# client.log<br>##################################################<br>
2008/04/28 12:38 -0400 [-] Log opened.<br>2008/04/28 12:38 -0400 [-] Client connecting...<br>2008/04/28 12:38 -0400 [-] Starting factory &lt;__main__.GreeterClientFactory instance at 0x8354d8c&gt;<br>2008/04/28 12:38 -0400 [-] Client startedConnecting<br>

2008/04/28 12:38 -0400 [-] Client done<br><br><br><br><br><br>##################################################<br>

# server.log<br>
##################################################<br>2008/04/28 14:41 -0400 [-] Log opened.<br>2008/04/28 14:41 -0400 [-] Server starting...<br>2008/04/28 14:41 -0400 [-] twisted.internet.protocol.Factory starting on 9010<br>

2008/04/28 14:41 -0400 [-] Starting factory &lt;twisted.internet.protocol.Factory instance at 0xb7cc18cc&gt;<br><br></div>