示例#1
0
        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 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);
            }
        }
示例#3
0
        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);
                }
            }
        }