linux下C/C++多线程远程传输编程问题请教

编程环境是linux
我现在想要解决这样一个问题,下面是伪代码:

Class worker{
private:
...
public:
...
//do the real transfer work
remoteTransfer();
}

然后创建一批新线程,线程们的函数入口就是上面这个类的remoteTransfer(), 从一个指定的文件夹中获取待传输的文件。

我想到的是在该函数里直接调用系统命令,诸如ftp之类,但是这样不知道效率和速度会不会很慢,听说从程序里直接地调用linux系统命令会比较慢。

我比较倾向的是,能不能找到一些开源的代码,直接提供远程传输的C/C++程序接口,那么我直接调用就好了。
请教高手指点!最好能给出详细的解决放案,从包含的头文件,到提供的api函数,有例子就最好了!
谢谢!!
还有一种scp的方法,基于ssh的,不知道和ftp,tcp等相比和有什么优缺点?
哪种更好?

既然是linux下远程传输文件内容,文件数据量较大,而且要保证传输质量的话,自然是选择TCP来传输。

推荐API自然是socket,至于例子,http://memorymyann.javaeye.com/admin/blogs/619855

这只是一个很简单的例子,多进程并发TCP传输需要注意很多问题,不过,在程序运行后会慢慢凸显出来,慢慢改就是。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-31
看看linux网络编程的书就好了,多进程多线程交互讲的很清楚。

scp是个命令,从属于ssh服务。可以理解成加密的ftp。如果你只是些shell,那么你可以用这个。如果是c/c++程序,建议你还是走socket吧。理解scp并不比你学socket通信要简单。
相似回答