2013-07-08 85 views
0

我正在關注站點http://www.codeproject.com/Articles/463947/Working-with-Sockets-in-Csharp上的示例以構建套接字程序。AsyncCallback上的acceptcallback替換

我只是想知道什麼是下面的代碼下acceptcallback的替代品。

Socket sListener; 

SocketPermission sPermission = new SocketPermission(NetworkAccess.Accept, 
     TransportType.Tcp, "", SocketPermission.AllPorts); 

sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 

IPHostEntry ipHost = Dns.GetHostEntry(""); 
IPAddress ipAddr = ipHost.AddressList[0]; 
IPEndPoint ipEndP = new IPEndPoint(ipAddr, 4510); 

sListener.Bind(ipEndP); 

sListener.Listen(10); 

//error below this 
AsyncCallback aCallback = new AsyncCallback(AcceptCallback);   
sListener.BeginAccept(aCallback, sListener); 
.... 

我搜索網,並嘗試了以下,但似乎沒有任何工作:

AsyncCallback aCallback = new AsyncCallback(AcceptCallback);   

AsyncCallback aCallback = new AsyncCallback(sListener.AcceptCallback); 

AsyncCallback aCallback = new AsyncCallback(this.AcceptCallback); 

AsyncCallback aCallback = new AsyncCallback(this.IAsyncResult); 

AsyncCallback aCallback = new AsyncCallback(aCallback);  

AsyncCallback aCallback = new AsyncCallback(sListener.aCallback); 

AsyncCallback aCallback = new AsyncCallback(this.aCallback); 

另一個參考我一直在尋找爲https://stackoverflow.com/questions/3722270/c-sharp-server-does-not-trigger-acceptcallback

這是我第一次做的插座在C#。

+1

是不是有一個 「AcceptCallback」 在你從複製的榜樣嗎?這是用戶定義的方法。你必須定義你自己的一個。 –

+0

與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts)。 –

+0

好的,先生,謝謝,我會檢查出來的。 –

回答

0

AcceptCallback是您創建並在異步操作完成時調用的方法。

看一下例子,在發現:

的http:// msdn.microsoft.com/en-us/library/system.asynccallback.aspx

// Create the delegate that will process the results of the 
      // asynchronous request. 
      AsyncCallback callBack = new AsyncCallback(ProcessDnsInformation); 

// The following method is called when each asynchronous operation completes. 
     static void ProcessDnsInformation(IAsyncResult result) 
     { ...