bupt-william / libjingle

Automatically exported from code.google.com/p/libjingle
0 stars 0 forks source link

tunnel session client for data transfer #214

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hi,

I want to use the TunnelSessionClient for transferring binary data between two 
nodes. I just started with transferring a simple string like "hello libjingle", 
but I got a "feature-not-implemented" error from server in session initiator 
phase. 

The implemetation is just simply like creating a new TunnelSession when each 
time there is data to send out, and write data to the stream which is got from 
CreatTunnel. Each node will handle SignalIncomingTunnel, accept the incoming 
tunnel and read data from stream as well. Am I missing something?

Please find the long in attache. The send command is like:
send <message_id> <data> <remote_node>

Original issue reported on code.google.com by wangqin...@gmail.com on 16 Sep 2011 at 10:48

Attachments:

GoogleCodeExporter commented 9 years ago
Hi there,
I have already implemented a data transfer application by tunnel session. It 
can transfer data between two online nodes. I have two problems which are still 
confused me now, I would appreciate if anyone could give any suggestions.

1. Gracefully shut down after data transfer complete. Now, when receiver got 
the completed transferred data, it will call stream->Close() to trigger session 
terminate and do some cleaning stuff. But the sender could send out candidate 
stanza before it received terminate stanza. When receiver received this 
candidate stanza, it will reply an "unknown session" stanza to the sender. At 
last, both sides will finished with an HTTP error:
Error(httpbase.cc:506): talk_base::HttpBase::HandleStreamClose: (10061)
HttpRequest completed with error: 4
Is there anyway to shutdown gracefully than this?

2. I have done some tests for concurrently transfer data between several nodes. 
But when the data size is larger(say 10mb), some of the channels will be closed 
without started transfer. I cached all the pending data, and created a channel 
for each data block. Then if TCP established for the channel, it will start 
transfer. But actually not all the channels can read/write concurrently. Dose 
it works for one session client with multi channels in Libjingle now? Btw, my 
version is 0.5.8.

Thanks. 

Original comment by wangqin...@gmail.com on 1 Nov 2011 at 5:00

GoogleCodeExporter commented 9 years ago
Hi,

could you please post your code, I'm trying to do the same thing and really 
need a starting point.

I've also looked at the old pcp example (Issue 107) but unfortunately this 
won't compile with newer libjingle versions.

Another example that I've found: https://bitbucket.org/ivucica/libjingle-test

Thanks in advance!

Original comment by cjan...@gmail.com on 2 Nov 2011 at 1:36

GoogleCodeExporter commented 9 years ago
Hi,

If you want to use tunnel session client, the pcp example in libjingle 0.3.0 is 
a good starting point.
I am currently porting this data transfer feature to java, there is a lot of 
work to do, maybe I will open source it after a stabilized version.

Original comment by wangqin...@gmail.com on 2 Nov 2011 at 3:23

GoogleCodeExporter commented 9 years ago
thanks for your fast reply but java is no option for me, before investing more 
time I've hoped for a working minimal example to test if libjinge is able to 
tunnel through my firewalls, than I will try to adapt the pcp example

Original comment by cjan...@gmail.com on 2 Nov 2011 at 9:18

GoogleCodeExporter commented 9 years ago
Obsoleted by the WebRTC p2p API.

Original comment by juberti@google.com on 1 Jun 2013 at 4:23

GoogleCodeExporter commented 9 years ago
haha,i find the efficiency of algorithm in the pseudotcp is only one-third of 
the TCP in the intranet and unstable.Have you implemented it? And have you 
optimize your performance?

Original comment by debut.fe...@gmail.com on 26 Mar 2014 at 6:39