Esempio n. 1
0
        private void OnReceive(IAsyncResult ar)
        {
            Socket clientSocket = null;

            try
            {
                int iRx;
                clientSocket = (Socket)ar.AsyncState;
                iRx          = clientSocket.EndReceive(ar);
                File.AppendAllText("c:\\tcp.txt", "OnReceive: " + iRx + Environment.NewLine);
                m_bufQueue.append(byteData, iRx);
                ReceiveProcess(clientSocket);
                clientSocket.BeginReceive(byteData,
                                          0,
                                          byteData.Length,
                                          SocketFlags.None,
                                          new AsyncCallback(OnReceive), clientSocket);
            }
            catch (Exception err)
            {
                //ServiceLogger.WriteLog(LOGGER_NAMES.MPFMSERV, err.Message);
                if (!clientSocket.Connected || clientSocket.Available == 0)
                {
                    int nIndex = 0;
                    foreach (ClientInfo client in clientList)
                    {
                        if (client.socket == clientSocket)
                        {
                            clientList.RemoveAt(nIndex);
                            break;
                        }
                        ++nIndex;
                    }

                    if (clientSocket != null)
                    {
                        clientSocket.Close();
                    }
                    return;
                }
                return;
            }
        }