tdy_z:我认为有一点问题,如果文件比较大,
SOCKET一定塞死了。客户不能收到全部内容。
应该在发送中检查发送的字节是否等于要发送的字节
再加以处理。
(发表于2002-3-31 8:29:00)
nuaapqk:服务器发送完毕就关闭连接,容易引起数据丢失
(发表于2002-3-31 10:27:00)
illpc:这样做在本机上还 ,但在其他机器上,特别是网络速度较慢时,传送过去的文件的属性(文件全名,大小,最后修改日期)都没有.特别是得不到文件的全名.
(发表于2002-3-31 13:50:00)
zycfl:应该分数据包传输才是上策!
(发表于2002-4-1 21:19:00)
wangzhonnew:用非阻塞套接字呢?
(发表于2002-4-2 13:44:00)
gxb2000:最好开线程,打包传输
(发表于2002-4-2 19:35:00)
HeartForEver:我先编写一遍。
(发表于2002-4-9 19:36:00)
llac953:这么传?没见过。
(发表于2002-4-10 12:04:00)
aa:send()能一次发送一个文件?
(发表于2002-4-21 11:28:00)
evilks:这段代码和前面下载的fileTansfer要怎么样结合在一起呀,那个filetansfer也不可以用呀!!能给个说法好吗?谢了!
(发表于2002-4-22 21:04:00)
elva:如果是一对多的呢,怎么传,也要有文件传送
(发表于2002-5-13 17:01:00)
Thomasil:大文件怎么传啊,我试过你的方法,传输大于10K就会丢失数据,如果谁知道请告诉我 E-mail:Thomasil@sohu.com
(发表于2002-5-16 14:32:00)
jyz_2000:循环发送!n=send();(******n为本次发送的实际字节数)
p+=n;
下次从p开始从新发送
(发表于2002-5-16 16:58:00)
lj2000:文件分割传送可以解决这个问题,并在传送过程中采用sleep(20),传送10M以上的文件都没有问题。对此有兴趣的认可发送电子邮件索取:地址:xhliujun@163.com
(发表于2002-5-21 14:18:00)
wangmang:对于大文件此法根本行不通.应该先定义一个文件信息属性结构体,先传此结构体,再在发送端循环读文件,循环传;接收端先接收文件结构体,在循环写文件,文件再大都没问题!
(发表于2002-5-31 11:05:00)
wangmang:我想问一下,为什么用CSocket类不能建立对特定IP的连接?如: CSocket sock;sock.Create();sock.Connect("192.168.0.2",8000);
(发表于2002-5-31 11:08:00)
张华宾:最好从CSocket派生自己的类,然后创建新的线程,在新线程中实现类的应用,重载CSocket类的OnReceive和OnSend等消息,这样就解决了线程阻塞和不能发送大文件的问题,详情可参见示例http://www.imagevampire.com那里有一个程序。
(发表于2002-6-4 10:26:00)
iamwuge:为了安全起见最好 自己定义一个类 处理Socket通信 因为文件传输一般是时间较长数据较多 最好传输一次以后服务器端等待客户端一个响应信息或者等待发送缓冲区有足够的空间以后再发送 不然会产生错误 CSocket不是很好用 我已经作了一个十分好用的SOCKET编程框架 是基于包标志的自动调用机制 我用它实现了12个客户端与一个服务器之间的同时通信 基本没有问题 我现在正用它实现远程计算机管理 我希望通过不断的测试改进 将它完善 现在基本上只要写功能相关的函数 网络通信的问题 由我的框架解决了 哈哈 N天辛苦 终于换来了高效率
(发表于2002-6-5 17:52:00)
snowbird:有这么麻烦吗?
我曾经直接用WINSOCK API还有ReadFile、WriteFile传送过100多M的文件
也用命名管道和ReadFile、WriteFile传送过同样大的文件
都很稳定
(发表于2002-7-9 9:16:00)
new_coming:编译的时候错误:fatal error C1083: Cannot open precompiled header file: 'Debug/asdfsd.pch': No such file or directory
Error executing cl.exe.
为什么?
(发表于2002-9-12 15:05:00)
h:h
(发表于2002-9-20 9:53:00)
sinall:源程序可改为:
// sockRecv.Send(data, myFileLength); //Send the whole thing now
for(int i=0;i<=myFileLength;i+=1024)
sockRecv.Send(data+i,1024); //Send the whole thing now
if(myFileLength%1024!=0)
sockRecv.Send(data+myFileLength-myFileLength%1024,myFileLength%1024);
// sockClient.Receive(data, dataLength); //Get the whole thing
for(int i=0;i<=dataLength;i+=1024)
sockClient.Receive(data+i,1024); //Send the whole thing now
if(dataLength%1024!=0)
sockClient.Receive(data+dataLength-dataLength%1024,dataLength%1024);
即可。
(发表于2004-4-25 16:18:00)
luolovegui:其实根本不能实现,你传一个exe文件,看收到的能不能运行???不行吧,主要是里面的'\0'字符的问题没有解决好。
(发表于2004-10-26 15:54:00)
scm:好象不能传exe文件,和大文件。那为朋友给个更好的代码?
(发表于2004-12-12 15:57:00)
chuiyun:基本理论:收发一次数据包不能大于1024字节,可以收发大数据包不会发生错误是因为系统自已帮你分开数个包了。
(发表于2004-12-22 14:40:00)
thinkz:你的代码我下载了 编译通过
但是不会使用
我在一太电脑上执行2个程序
先SERVER 后 Client
但是报错 为什么
(发表于2005-12-2 11:35:00)
pluto026:不适合exe,不适合bmp等格式,原理应该是chuiyun所说的
(发表于2008-7-2 11:01:00)
..........................................................................
--------------------next---------------------