Thanks Alan and Joris!<br><br>&nbsp;&nbsp;&nbsp; Although you both answer my question - most clients will probably refuse a second connection from a peer it is already connected to, I think you probably miss my idea a little bit. When there is a peer A wants to download data from peer B. They exchange the handshake messages and peer B responses a bitfield message through one conneciton. I think we all agree that things should go in this way. My question is ,at certain moment , peer B realizes peer A also has data I need. Will peer B initiate another connection to peer A or he will try to use the existing connection between peer A and B? Is it ture that no Bittorrent client was implemented in this way? Thank you for your help! :) Sorry! my last message probably confussed you.<br><br>Yao-Chin<br><br><b><i>Alan McGovern &lt;alan.mcgovern@gmail.com&gt;</i></b> wrote:<blockquote class="replbq" style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;">
 Hi,<br><br><div style="margin-left: 40px;">Besides, in typical case, a peer may not always need to send and receive data from the same peer.<br></div>Firstly, that's wrong ;) The very first message that *must* be sent to each peer that is trying to connect to each other is the handshake message. Then the bitfield message must be next, which also must be sent between both peers. If you want to request a piece off the other client, you must send them a RequestMessage. <br><br>It becomes extremely messy when you are trying to keep track of which socket is for incoming data and which is for outgoing data. Finally, most clients will not accept two connections from the same peer, so you'd find that you'd never receive data from them. <br><br>It's not so much the bittorrent standard that says connections are symmetrical, it's more the TCP standard was designed with this in mind as it's more efficient than havingtwo maintain 2 sockets just to talk to one peer.
 <br><br><br><br><div><span class="gmail_quote">On 11/3/06, <b class="gmail_sendername">Joris Guisson</b> &lt;<a href="mailto:joris.guisson@gmail.com">joris.guisson@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> There is no client which uses 2 connections, you do not have a choice in this matter, you use one connection per peer. Most clients will probably refuse a second connection from a peer it is already connected to.<br><span class="sg"> <br>Joris, <br><br></span><div><span class="q"><span class="gmail_quote">On 11/3/06, <b class="gmail_sendername">Yao-Chin Wu</b> &lt;<a href="mailto:yaochinwu@yahoo.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> yaochinwu@yahoo.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> Thank you for
 your prompt response.<br><br>I have this idea mainly because it is easier to implement. The thread handles its own inbound or outbound connection can focus only on its own job. </blockquote><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">  Besides, in typical case, a peer may not always need to send and receive data from the same peer. But, it seems like it is not a good idea at all. If other members can also provide your opinion, that will also be appreciated.&nbsp; </blockquote><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">BTW, Mike mentioned that one connection is the standard in this situation. And there is a short paragraphe in Bittorrent protocal, which says,"Peer connections are symmetrical. Messages sent in both directions look the same, and data can flow in either direction." Does your point come
 from here? If it is the standard, there must be no Bittorrent client designed to use separated connections because it could even fail to work with other existing implmentation: one peer cannot handle download and upload in one connectoin while its uploader assumes it could, and  send a request message through this connection and would never get response. Thank you.</blockquote><div><br><br></div><br></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div><span class="e" id="q_10eacaf9b0bfdf8c_5"> <span><b><i>Alan McGovern &lt;<a href="mailto:alan.mcgovern@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">alan.mcgovern@gmail.com</a>&gt;</i></b> wrote: </span><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div><span> Hi,<br><br>There's no point in not using the same connection to both send and receive data.
 No program that i know of would use a seperate socket to send data and receive data from the the same host, it's inefficient and awkward.  <br><br>Thanks,<br><span>Alan.<br><br>(forgot to hit "reply to all" the first time, sorry)<br></span><div><span><br>&nbsp;<br><div><span class="gmail_quote">On 11/2/06,  <b class="gmail_sendername">Michael Parker</b>   &lt;<a href="mailto:mgp@ucla.edu" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">mgp@ucla.edu</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">    <br>On Nov 2, 2006, at 8:22 AM, Yao-Chin Wu wrote:<br>&gt; Dear all,<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; I am a college student and doing a project related to P2P<br>&gt; structure. Bittorrent is a excellent resource for us, and we are <br>  &gt; trying to understand its code as much as possible.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Accroding to
 the Bittorrent client implemented by Bram Cohen,<br>&gt; it looks like using only one connection when peer A is downloading<br>  &gt; a piece from peer B and peer B also wants to download a piece from <br>&gt; peer A ( one connection for downloading and uploading also). Is<br>&gt; that correct? Is there other implementatioins using seperated<br>&gt; connections for this situation? Which one may be better? Thank you <br>  &gt; for your help!<br>&gt;<br><br>Yes, the standard is that there is only one connection between them.<br>I don't think there's much  point to separated connections for<br>uploading and downloading -- by using a single connection you can cut <br>the overhead from the TCP headers in half. Also, if two different<br>connections were used, that gives me the impression that each side is <br>responsible for creating one of the connections (although not<br>necessarily). But with the prevalence of NATs and firewalls today, <br>you'd be running a greater risk of
 one side not being able to connect<br>at all, and hence one side not being able to download or upload at all. <br><br>- Mike<br><br><br>_______________________________________________ <br>BitTorrent mailing list<br><a href="mailto:BitTorrent@lists.ibiblio.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">  BitTorrent@lists.ibiblio.org</a><br><a href="http://lists.ibiblio.org/mailman/listinfo/bittorrent" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> http://lists.ibiblio.org/mailman/listinfo/bittorrent  </a><br></blockquote></div><br>  </span></div></span></div> _______________________________________________<span><br>BitTorrent mailing list<br><a href="mailto:BitTorrent@lists.ibiblio.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">  BitTorrent@lists.ibiblio.org</a><br><a href="http://lists.ibiblio.org/mailman/listinfo/bittorrent" target="_blank" onclick="return
 top.js.OpenExtLink(window,event,this)">http://lists.ibiblio.org/mailman/listinfo/bittorrent </a><br></span></blockquote><span><br><div>   </div><hr size="1">Cheap Talk? Check out Yahoo! Messenger's low <a href="http://us.rd.yahoo.com/mail_us/taglines/postman8/*http://us.rd.yahoo.com/evt=39663/*http://voice.yahoo.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">   PC-to-Phone call rates.</a>  <div></div></span><br></span></div>_______________________________________________<span class="q"><br>BitTorrent mailing list<br><a href="mailto:BitTorrent@lists.ibiblio.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> BitTorrent@lists.ibiblio.org </a><br><a href="http://lists.ibiblio.org/mailman/listinfo/bittorrent" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://lists.ibiblio.org/mailman/listinfo/bittorrent</a><br><br><br></span></blockquote>  </div><br> 
 <br>_______________________________________________<br>BitTorrent mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:BitTorrent@lists.ibiblio.org">BitTorrent@lists.ibiblio.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://lists.ibiblio.org/mailman/listinfo/bittorrent" target="_blank"> http://lists.ibiblio.org/mailman/listinfo/bittorrent</a><br><br><br></blockquote></div><br> </blockquote><br><p>&#32;

<hr size=1>Cheap Talk? Check out Yahoo! Messenger's low <a href="http://us.rd.yahoo.com/mail_us/taglines/postman8/*http://us.rd.yahoo.com/evt=39663/*http://voice.yahoo.com"> PC-to-Phone call rates.</a>