问一个关于socket异步传输中回调函数是怎么一回事? 在线等,马上结贴
/// <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是一个异步传送的方法,里面要用到回调函数,有谁以前也写的,请帮我看下,我在线的,马上结贴的
------解决方案--------------------我也遇到过,是单独写一个类,用构造函数传参数的方法实现的。MSDN上写着呢
------解决方案--------------------定义一个和OnSend委托签名一样的方法,并将其传递给OnSendFile参数!
------解决方案--------------------回调函数要用到委托,委托相当于函数指针,能指向所用符合委托签名规则的方法。
如委托public delegate void dg1(int a);有一个方法public void method1(int a);
那么就可以用dg1(method1)在函数里调用他。
------解决方案--------------------http://msdn2.microsoft.com/zh-cn/library/system.net.sockets.socket(VS.80).aspx
------解决方案--------------------你是在WebForm上面用Socket吗?如果是的话,调用异步方法需要异步页面(Asycn Page)技术。
至于callback函数是什么,其实也就是一个委托。例如你想问现在微软的股价多少,一般的函数相当于你打电话过去,对方告诉你股价多少,而callback函数相当于对方告诉你需要花一点时间去查,因此你要留一个电话号码给他,也就是callback函数的委托,过一会儿他在打电话告诉你结果。