得到"点对点传输文件"的源代码,大家看看! 这样修改int iBytes=1;while(iBytes>0)两段都这样改就行了,猜的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像是传输完文件后,阻塞在StreamTCP.Write(ReadBuffer,0,iBytes);一句上,有时连紧跟其后的语句都执行不了。 看了CSDN上的介绍,NetworStream的Write和Read方法会阻塞程序直到所要求的字节发送或接收完。那么怎样才能避免这种阻塞呢? http://www.eaoo.com/design/list.asp?classid=2&Nclassid=44 cnpr(-----) 是在做广告吧,几乎每个贴子上都有这个网址 这样改一下不行吗?int iBytes=1;while(iBytes>0)这样就可以达到客户端传完断开连接,服务器接收完关闭SOCKET了嘛 ///传输方while(!StreamTCP.Readable){ if(StreamTCP.Writeable) StreamTCP.Write(ReadBuffer,0,iBytes);}///接受方while(!StreamTCP.Readable){ if(StreamTCP.Readable) iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);} 错了,更正///传输方while(!StreamTCP.Writeable){ if(StreamTCP.Writeable) StreamTCP.Write(ReadBuffer,0,iBytes);}///接受方while(!StreamTCP.Readable){ if(StreamTCP.Readable) iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);} to yuzaichun(最爱.NET),我在程序中只是随便举了一个fbytes=1024字节的例子,fbytes实际是根据文件大小自动取得的,每次约定传送512字节。问题是每当发送到最后一次循环上就阻塞了,发送方停在StreamTCP.Write(ReadBuffer,0,iBytes);这句上不能跳出。(这时的iBytes<512字节),而接受方也阻塞。to loadme_litbear(沙漠@雨季),这个方法试了,不可行。 ///传输方if(StreamTCP.Writeable)StreamTCP.Write(ReadBuffer,0,iBytes);else{ while(!StreamTCP.Writeable) { if(StreamTCP.Writeable) StreamTCP.Write(ReadBuffer,0,iBytes); }}///接受方if(StreamTCP.Readable)iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);else{ while(!StreamTCP.Readable) { if(StreamTCP.Readable) iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length); }}这样试试? ///传输方if(StreamTCP.Writeable)StreamTCP.Write(ReadBuffer,0,iBytes);else{ while(!StreamTCP.Writeable) { if(StreamTCP.Writeable) { StreamTCP.Write(ReadBuffer,0,iBytes); break; } }}///接受方if(StreamTCP.Readable)iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);else{ while(!StreamTCP.Readable) { if(StreamTCP.Readable) { iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length); break; } }}不好意思,毛病太多,我是初学者就这样吧,思路给你了,看看能不能解决 阻塞我十几天的问题终于解决,关键就在progressBar1,因为我在线程中修改进度栏,引起程序崩溃,我以为是程序阻塞了。改用Invoke就行了。请看:http://expert.csdn.net/Expert/TopicView1.asp?id=2296126 多谢大家,给分!!! vs插件 ReSharper 的功能? 请问谁有PegasusImaging.WinForms.ImagXpress7.dll 二进制的怎么显示图片? C#。net2005和c#。net2008区别大吗? 求高手赐教[DLL控制问题] 求分布式数据采集方案 请教一个问题,请问一下如何实现能计算的文本公式? dataGridView与Datatable C#怎么样实现关机? .net(c#)问题,如何用js脚本调flash VB.net2003 和VC#.net2003 using Microsoft.Web.UI.WebControls;这个引用我为社么不能用?
int iBytes=1;
while(iBytes>0)
这样就可以达到客户端传完断开连接,服务器接收完关闭SOCKET了嘛
while(!StreamTCP.Readable)
{
if(StreamTCP.Writeable)
StreamTCP.Write(ReadBuffer,0,iBytes);
}///接受方
while(!StreamTCP.Readable)
{
if(StreamTCP.Readable)
iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
}
while(!StreamTCP.Writeable)
{
if(StreamTCP.Writeable)
StreamTCP.Write(ReadBuffer,0,iBytes);
}///接受方
while(!StreamTCP.Readable)
{
if(StreamTCP.Readable)
iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
}
if(StreamTCP.Writeable)StreamTCP.Write(ReadBuffer,0,iBytes);
else
{
while(!StreamTCP.Writeable)
{
if(StreamTCP.Writeable)
StreamTCP.Write(ReadBuffer,0,iBytes);
}
}
///接受方
if(StreamTCP.Readable)iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
else
{
while(!StreamTCP.Readable)
{
if(StreamTCP.Readable)
iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
}
}这样试试?
if(StreamTCP.Writeable)StreamTCP.Write(ReadBuffer,0,iBytes);
else
{
while(!StreamTCP.Writeable)
{
if(StreamTCP.Writeable)
{
StreamTCP.Write(ReadBuffer,0,iBytes);
break;
}
}
}
///接受方
if(StreamTCP.Readable)iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
else
{
while(!StreamTCP.Readable)
{
if(StreamTCP.Readable)
{
iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
break;
}
}
}不好意思,毛病太多,我是初学者
就这样吧,思路给你了,看看能不能解决