我希望使用C ++语言使用套接字从客户端到服务器进行文件传输...
我只将代码传输到客户端和服务器。
如何传输文件?任何帮助或参考资料也会有所帮助。
答案 0 :(得分:2)
将文件转换为字节流,并将其发送到套接字并在服务器上将其作为字节流读取。
答案 1 :(得分:2)
如果您可以使用特定于Winsock的解决方案,请查看TransmitFile()
函数。 Linux和Solaris都有sendfile()
函数,它们以类似的方式执行,但我相信Linux和Solaris的API sendfile()
略有不同。这些功能提供了额外的好处,无需将文件内容复制到您的地址空间。
否则有几个选项,包括但不限于以下内容:
sendfile()
和TransmitFile()
函数仍然会更快。与往常一样,对您的代码进行分析。您可能想要考虑的另一件事是您是否希望套接字写操作是阻塞或非阻塞,并且在接收端也是如此。非阻塞IO将要求您使用平台的事件多路分解机制(例如POSIX平台上的select()
)。
Boost.Asio也可能会大大简化您的任务。如果可能的话,我建议在原生API上使用它。
HTH!
答案 2 :(得分:0)
您还可以查看CSocketFile 根据MSDN
类 CSocketFile 派生自CFile,但它不支持CFile成员函数,如定位函数(Seek,GetLength,SetLength等),锁定函数(LockRange, UnlockRange)或GetPosition函数。所有CSocketFile对象必须做的是写入或读取相关CSocket对象的字节序列。