2011-12-22 15 views
0

IAsyncResult.AsyncStateをStateObjectクラスにキャストしようとしています。しかし、AsyncStateはSocket型であるため、キャストエラーが発生しています。結果からバイトデータを取得する必要があります。私はちょうどServerプロジェクトを始めました。私はそれに精通していません。IAsyncResult.AsyncStateをキャストできません

public class StateObject 
    { 
     // Client socket. 
     public Socket workSocket = null; 
     // Size of receive buffer. 
     public const int BufferSize = 256; 
     // Receive buffer. 
     public byte[] buffer = new byte[BufferSize]; 
     // Received data string. 
     public StringBuilder sb = new StringBuilder(); 
    } 

これはOnReceiveHandlerClass

事前に
private void Receive(IAsyncResult result) 
    { 

     StateObject ss = (StateObject)result.AsyncState; 
     ...... 
     } 

おかげ..です

+0

フレンド問題が修正されました:-) – Sunil

+1

修正プログラムを回答として投稿し、それを受け入れることで、将来の世代のプログラマが同じ運命を免れる可能性があります。 :) – Amy

+0

実際には私は基本を知らなかったので、私の間違いでした。私は間違いを投稿します。あなたはそれが誰かを助けるかもしれないと言ったので:-) – Sunil

答えて

0

私はStateObject

を送信する場合にBeginReceiveメソッドで別のオブジェクトを送っていたので、私はエラーを取得しました
Correct method: 
Socket.BeginReceive(StateObject.DataBuffer, 0, (int)StateObject.DataLength, 
         SocketFlags.None, new AsyncCallback(this.Receive),StateObject); 

最後のパラメータはStateObje型であるはずでしたctと私はそのパラメータのために送信するものがわからないのでオブジェクトを送信します。