大文件用socket传送的问题(100分)

  • 主题发起人 主题发起人 hly
  • 开始时间 开始时间
問題太亂﹐能不能把問題分開來討論﹖
 
to hly:
给我一份好吗?谢谢!
seaoy@21cn.com
 
to hly:
给我一份好吗?谢谢!
luces@dygg[red][/red].com

 
to hly:
我也遇到同样问题,大于4k就会有问题
给我一份好吗?谢谢!
maxl945@163.com


 
我以前用过一个试例,用serversocket和clientsocket,使用断点续传,

传个百八十兆的,根本没有问题,我当时试过把文件分割成从512个字节,
到100KB的,的多种片段,传输时,的速度一直都很稳定。
你们也可以试试,

断点续传的思路很简单,而且具体实现上也没什么难点。
 
公司现在好久上不了网了
没办法发送了
 
我今天用TFileStream写了东西,就是不停的向TFileStream写东西,写到300多M的时候就不写了,
各位试过没有?是不是只能是300多M.

在Server.Accept过程中:

当Client.Active := True只是去连接Server,会触发Server的Accept,Accept侦听到一个ClientSocket: TSocket,然后Server根据这个ClientSocket来生成一个TServerClientWinSocket对象,放在Connection: TList中,那么这个过程中,在程序中可以通过GetSocket(
TObject *Sender,//Sender是TServerSocket对象
int Socket, //Socket就是Server.Accept回来的ClientSocket
TServerClientWinSocket *&ClientSocket) //它是个指针对象,如果你写了它的继承类,那就把它进行动态生成一个实例,那传回去的值会保存在Connection: TList中.
也就是我们用的ServerSocket1->Socket->Connection这个对象中.

如果是stThreadBlock模式,则继续触发事件:
GetThread(TObject *Sender, //同上
TServerClientWinSocket *ClientSocket, //一个对象实例了,就是刚在GetSocket中实例化的对象,如果你没定GetSocket,或没有对那个实例进行构造,那么会是默认构造一个TServerClientWinSocket.
TServerClientThread *&SocketThread)//这是线程模式中构造ServerSocket的线程对象,如果你想自己维护与客户的全部生存期的连接,那么你就自己写它的继承类,再在这构造它.

它们关系: GetSocket
Accept.ClientSocket => TServerClientWinSocket->SocketHandle => ServerSocket->Socket->Connection->SocketHandle
 
后退
顶部