private void WaitForData(Socket socket) { try { if (pfnWorkerCallBack == null) { pfnWorkerCallBack = new AsyncCallback(OnDataReceived); } SocketPacket theSocPkt = new SocketPacket(socket); socket.BeginReceive(theSocPkt.dataBuffer, 0, theSocPkt.dataBuffer.Length, SocketFlags.None, pfnWorkerCallBack, theSocPkt); } catch (SocketException sex) { MessageBox.Show(sex.Message); } }
private void OnDataReceived(IAsyncResult asyn) { SocketPacket socketData = (SocketPacket)asyn.AsyncState; try { int iRx = socketData.Socket.EndReceive(asyn); byte[] buff = socketData.dataBuffer; byte[] data = new byte[iRx - 1]; Array.Copy(buff, 1, data, 0, iRx - 1); switch (buff[0]) { case 0x01: Negotiate(data); break; case 0x02: //RecieveWork(data); break; case 0x03: //Data Sent and Recieved OK break; case 0x04: Generate(); break; case 0x05: RecieveResults(data); break; case 0x06: GenerationComplete(); break; case 0x07: ValueRequested(data); break; case 0x08: break; case 0x09: SetValue(data); break; } WaitForData(socketData.Socket); } catch (ObjectDisposedException) { //System.Diagnostics.Debugger.Log(0, "1", "\nOnDataReceived: Socket has been closed\n"); } catch (SocketException sex) { if (sex.ErrorCode == 10054) { //string msg = "Client " + socketData.m_clientNumber + " Disconnected" + "\n"; //AppendToRichEditControl(msg); //MessageBox.Show("Disconnected"); if (Died != null) { Died(this); } //_workerSocketList[socketData.m_clientNumber - 1] = null; //UpdateClientListControl(); } else { //MessageBox.Show(sex.Message); } } }