<br><font size=2 face="sans-serif">Hi,</font>
<br>
<br><font size=2 face="sans-serif">Thanks for your reply Terry.</font>
<br>
<br><font size=2 face="sans-serif">I am still not done with this problem.
Please tell me can a server send a list object using socket programming
to the requesting client?</font>
<br><font size=2 face="sans-serif">If yes, how? I am getting the following
error </font>
<br><font size=2 face="sans-serif">        "TypeError:
send() argument 1 must be string or read-only buffer, not list"</font>
<br>
<br><font size=2 face="sans-serif">For sending list object I tried the
following code: - </font>
<br>
<br><font size=2 face="sans-serif">Server Code: -</font>
<br><font size=2 face="sans-serif">---------------------------------------------------------------------------------------------------------</font>
<br><font size=2 face="sans-serif">someList = [ 1, 2, 7, 9, 0 ]</font>
<br><font size=2 face="sans-serif">pickledList = pickle.dumps ( id(someList)
)</font>
<br>
<br><font size=2 face="sans-serif"># Our thread class:</font>
<br><font size=2 face="sans-serif">class ClientThread ( threading.Thread
):</font>
<br>
<br><font size=2 face="sans-serif"># Override Thread's __init__ method
to accept the parameters needed:</font>
<br><font size=2 face="sans-serif">       def __init__
( self, channel, details ):</font>
<br>
<br><font size=2 face="sans-serif">          self.channel
= channel</font>
<br><font size=2 face="sans-serif">          self.details
= details</font>
<br><font size=2 face="sans-serif">          threading.Thread.__init__
( self )</font>
<br>
<br><font size=2 face="sans-serif">       def run (
self ):</font>
<br>
<br><font size=2 face="sans-serif">          print
'Received connection:', self.details [ 0 ]</font>
<br><font size=2 face="sans-serif">          self.channel.send
( pickledList )</font>
<br><font size=2 face="sans-serif">           
     </font>
<br><font size=2 face="sans-serif">          self.channel.close()</font>
<br><font size=2 face="sans-serif">          print
'Closed connection:', self.details [ 0 ]</font>
<br>
<br><font size=2 face="sans-serif"># Set up the server:</font>
<br><font size=2 face="sans-serif">server = socket.socket ( socket.AF_INET,
socket.SOCK_STREAM )</font>
<br><font size=2 face="sans-serif">server.bind ( ( '', 2727 ) )</font>
<br><font size=2 face="sans-serif">server.listen ( 5 )</font>
<br>
<br><font size=2 face="sans-serif">    # Have the server serve
"forever":</font>
<br><font size=2 face="sans-serif">while True:</font>
<br><font size=2 face="sans-serif">           
   channel, details = server.accept()</font>
<br><font size=2 face="sans-serif">        print
channel, details</font>
<br><font size=2 face="sans-serif">           
   ClientThread ( channel, details ).start()</font>
<br>
<br>
<br><font size=2 face="sans-serif">Client Code: -</font>
<br><font size=2 face="sans-serif">---------------------------------------------------------------------------------------------------------</font>
<br><font size=2 face="sans-serif">class ConnectionThread ( threading.Thread
):</font>
<br>
<br><font size=2 face="sans-serif">       def run (
self ):</font>
<br>
<br><font size=2 face="sans-serif">          #
Connect to the server:</font>
<br><font size=2 face="sans-serif">          client
= socket.socket ( socket.AF_INET, socket.SOCK_STREAM )</font>
<br><font size=2 face="sans-serif">          client.connect
( ( 'localhost', 2727 ) )</font>
<br><font size=2 face="sans-serif">         
#print 'Connected!!',client</font>
<br>
<br><font size=2 face="sans-serif">          #
Retrieve and unpickle the list object:</font>
<br><font size=2 face="sans-serif">          lst=
pickle.loads ( client.recv ( 1024 ) )</font>
<br>
<br><font size=2 face="sans-serif">          #
Close the connection</font>
<br><font size=2 face="sans-serif">          client.close()</font>
<br>
<br><font size=2 face="sans-serif"># Let's spawn a few threads:</font>
<br><font size=2 face="sans-serif">for x in xrange ( 10 ):</font>
<br><font size=2 face="sans-serif">       ConnectionThread().start()</font>
<br><font size=2 face="sans-serif">---------------------------------------------------------------------------------------------------------</font>
<br>
<br><font size=2 face="sans-serif">In the above code I am able to get the
id of the server List in the client, but can not access the content at
the client. And if I send the pickled list to the client, it creates a
new list at the client end, which is not desirable.</font>
<br>
<br><font size=2 face="sans-serif">Please suggest how to share a in-memory
list object across two different programs?</font>
<br>
<br><font size=2 face="sans-serif">Thanks.</font>
<br><font size=2 face="sans-serif">Piyush.</font>
<br><font size=2 face="sans-serif"><br>
</font>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Piyush Chechani/DEL/TCS</b>
</font>
<p><font size=1 face="sans-serif">08/01/2008 01:24 PM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">python-list@python.org</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Sharing common memory space (In form
of List) across the python processes.</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br><font size=2 face="sans-serif">Hi,</font>
<br>
<br><font size=2 face="sans-serif">I am working on a module where I need
to share contents of a big List across the processes. I am using socket
programming concept for this.</font>
<br>
<br><font size=2 face="sans-serif">My current processing for this is as
follows: -</font>
<br><font size=2 face="sans-serif">        1.
There is a server program S which loads the list in the memory, and listens
on a particular port,</font>
<br><font size=2 face="sans-serif">        2.
All the other programs which want to access that list sends a request on
that server port,</font>
<br><font size=2 face="sans-serif">        3.
Server sends the id of the memory loaded list element to the requesting
process.</font>
<br><font size=2 face="sans-serif">Here I am getting a problem in the reverse
function of id(), as my client should get the list object using its id
but I don't know the python function for doing this.</font>
<br>
<br><font size=2 face="sans-serif">Please help me in solving this problem,
also if you have any other more robust solution for this processing then
please share that.</font>
<br>
<br><font size=2 face="sans-serif">Thanks in advance.</font>
<br>
<br><font size=2 face="sans-serif">Piyush.</font>
<br>
<br><font size=2 face="sans-serif"><br>
</font>
<br><font size=1 color=white face="sans-serif">ForwardSourceID:NT0000B9AE
   </font>
<br><pre>=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you


</pre>