Невозможно привести IAsyncResult.AsyncState - PullRequest
0 голосов
/ 22 декабря 2011

Я пытаюсь привести IAsyncResult.AsyncState к классу StateObject. Но он выдает ошибку приведения, поскольку AsyncState имеет тип Socket. Мне нужно получить байтовые данные из результата. Я только начал проект сервера, и я не знаком с этим.

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();
    }

Это класс OnReceiveHandler

private void Receive(IAsyncResult result)
    {

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

Заранее спасибо ..

1 Ответ

1 голос
/ 06 января 2012

Я получаю сообщение об ошибке, потому что я отправлял другой объект в методе BeginReceive в случае отправки StateObject

Correct method:
Socket.BeginReceive(StateObject.DataBuffer, 0, (int)StateObject.DataLength, 
                      SocketFlags.None, new AsyncCallback(this.Receive),StateObject);

Предполагалось, что последний параметр имеет тип StateObject, и я отправляю объект как iне было известно, что отправить для этого параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...