sigh 发表于 2006-4-29 10:24:19

局域网里传输文件,传大文件就会出现问题,

<p>我在用winsock写一个在局域网里传输文件的程序,</p><p>现在是可以传小的文件,传大文件就会出现问题,</p><p>首先,在发送端,循环读文件时(我用的是PB帮助里的代码),</p><p>读出的大小不一样,第一个是32769,以后的都是9741</p><p>并且,多读了很多便,,</p><p>而且只是发送最后一部分.</p><p>请高手指点.谢谢!</p><p>另外是否可以用别的方法实现局域网内文件的传输,(发消息,我实现了)</p><p>谢谢!</p>

sigh 发表于 2006-4-29 10:41:50

<p>我是先把文件的名字发送过去,接着发送数据,通过标示区别,</p><p>但是好像,文件名字发送不成功,</p><p>如果,发送名字,接受到后发送应答,再发送数据,是可以的,但是为什么不加应答就不行呢?</p><p>这样是不是,每个数据包也要,发送,收到应答,再发送呢?</p><p>谢谢.</p>

sigh 发表于 2006-4-29 11:20:30

<p>前面我提的问题很乱,我试了,发现,问题首先在发送</p><p>测试了一下,发现读了很多次,如下,前两次读的大小是32769,后面是9741</p><p>$32769$32769$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741$9741</p><p></p><p>string ls_filename<br/>ls_filename = filename//filename是要发送的文件的名字 <br/>integer li_FileNum, loops, i <br/>long flen, bytes_read, new_pos<br/>blob b,tot_b<br/>// Set a wait cursor<br/>SetPointer(HourGlass!)<br/>// Get the file length, and open the file<br/>flen = FileLength(ls_filename)<br/>li_FileNum = FileOpen(ls_filename, &amp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamMode!, Read!, LockRead!)<br/>// Determine how many times to call FileRead<br/>IF flen &gt; 1020 THEN<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF Mod(flen, 1020) = 0 THEN<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loops = flen/1020<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loops = (flen/1020) + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END IF<br/>ELSE<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loops = 1<br/>END IF<br/>// Read the file<br/>new_pos = 1<br/>FOR i = 1 to loops<br/>&nbsp;tot_b = blob("data")<br/>&nbsp;bytes_read = FileRead(li_FileNum, b)&nbsp; <br/>&nbsp;tot_b = tot_b + b<br/>&nbsp;Write_Data = tot_b<br/>&nbsp;WriteMsg()<br/>NEXT<br/>FileClose(li_FileNum)<br/>return 0</p><p>在下面的一句:如果我控制b的大小是不是就可以控制每次读取的大小</p><p>例如:&nbsp; b = blob(space(1020)) 但是好像不行</p><p>bytes_read = FileRead(li_FileNum, b)&nbsp;&nbsp; </p>
页: [1]
查看完整版本: 局域网里传输文件,传大文件就会出现问题,

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com