/// <summary>
/// 将文件写到Socket
/// </summary>
                 /// <param name="s">要发送文件的Socket</param>
/// <param name="strFile">要发送的文件</param>
/// <returns>是否成功</returns>
public static bool WriteFileToSocket(Socket s,string strFile,OnSend OnSendFile)
{
FileStream fs = new FileStream(strFile,FileMode.Open,FileAccess.Read,FileShare.Read) ; int iLen = (int)fs.Length ; WriteDynamicLenToSocket(s,iLen) ;
byte [] buf = new byte[iLen] ;
try
{ fs.Read(buf,0,iLen) ;
return WriteBufToSocket(s,buf,0,iLen,DEALLEN,OnSendFile) ;
} catch(Exception err)
{
MessageBox.Show("发送文件失败!"+err.Message) ;
            return false ;
} finally
{ fs.Close() ;
}              
}
这是一个别人写好的类
我直接调用
baseClass.CommunClass.WriteFileToSocket(socket,SendFileName,得到文本长度的回调函数)这个不会写了WriteFileToSocket是一个异步传送的方法,里面要用到回调函数,有谁以前也写的,请帮我看下,我在线的,马上结贴的

解决方案 »

  1.   

    我也遇到过,是单独写一个类,用构造函数传参数的方法实现的。MSDN上写着呢
      

  2.   

    我用的是vs2003  思路是这样的: 在一个新类中声明一个委托,在构造函数中传入参数和委托参数,然后在别处声明调用这个类,就可以获得你想要返回参数了.你可以在MSDN的索引中输入"委托" 查一下
      

  3.   

    定义一个和OnSend委托签名一样的方法,并将其传递给OnSendFile参数!
      

  4.   

    回调函数要用到委托,委托相当于函数指针,能指向所用符合委托签名规则的方法。
    如委托public delegate void dg1(int a);有一个方法public void  method1(int a);
    那么就可以用dg1(method1)在函数里调用他。
      

  5.   

    http://msdn2.microsoft.com/zh-cn/library/system.net.sockets.socket(VS.80).aspx