비동기 소켓 연결을 구현하고 클라이언트와 성공적으로 통신하도록했습니다. 현재 문제는 정의 된 프로토콜에 독립적 인 타이머로 클라이언트에 패킷을 보낼 때입니다.SocketAsyncEventArgs (SAEA)에 대한 질문
내가 SAEA.AcceptSocket.SendAsync (...)를 호출 할 때마다 나는 예외를 얻을 : System.InvalidOperationException를 "비동기 소켓 작업이 SocketAsyncEventArgs 인스턴스를 사용하여 이미 진행 중입니다."
나는 몇 가지 테스트를하고 SAEA.AcceptSocket.SendAsync (...) 다른 후 바로 하나를 호출 할 수없는 것. 이것은 SAEA가 설계된 방식입니까, 아니면 예외를 발생시키는 원인이되는 코드에서 잘못된 일을하고 있습니까?
나는 인터넷 검색에 약간의 시간을 보냈지 만 답변을 찾을 수없는 것 같습니다. 누군가 나를 도울 수 있거나 올바른 방향으로 나를 가리킨다면 많은 도움이 될 것입니다!
감사합니다.
수락 완료시 SocketAsyncEventArgs가 만들어지면 클라이언트마다 하나의 SocketAsyncEventArgs가 있으므로 고유 한 인스턴스를 어떻게 만듭니 까? – n00b
초기 acceptAsync 호출에 대해 SocketAsyncEventArgs를 만들어 전달한 다음 호출이 완료되면 다시 가져옵니다 ... 다음 재사용하거나 다음 작업을 수행하기 위해 새 작업을 만들 수 있습니다. do ... –
고맙습니다 Len은 당신의 제안으로 올바른 길로 인도합니다. SocketAsyncEventArgs의 고유 인스턴스를 사용하고 다른 SocketAsyncEventArgs의 소켓을 사용하여 동일한 클라이언트에 보냈습니다. SocketAsyncEventArg가 동시에 사용 되었기 때문에 예외가 발생했지만 두 개 이상의 SocketAsyncEventArgs간에 동일한 AcceptSocket을 사용하는 것이 좋습니다. – n00b