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