示例#1
0
        public void WaitForData2(Socket soc, int clientNumber)
        {
            SocketPacket2 theSocPkt = new SocketPacket2(soc, clientNumber);

            try
            {
                if (pfnWorkerCallBack == null)
                {
                    pfnWorkerCallBack = new AsyncCallback(OnDataReceived2);
                }
                soc.BeginReceive(theSocPkt.dataBuffer, 0, theSocPkt.dataBuffer.Length, SocketFlags.None, pfnWorkerCallBack, theSocPkt);
            }
            catch (SocketException se)
            {
                if (se.ErrorCode == 10053)
                {
                    string msg = theSocPkt.string_RemoteEndPoint.ToString() + " Disconnected";
                    AppendToRichEditControl(msg);
                    m_workerSocketList[theSocPkt.m_clientNumber - 1] = null;
                    UpdateClientListControl();
                }
                else
                {
                    MessageBox.Show(se.Message);
                }
            }
        }
示例#2
0
        public void OnDataReceived2(IAsyncResult asyn)
        {
            SocketPacket2 socketData = (SocketPacket2)asyn.AsyncState;

            try
            {
                int    iRx            = socketData.m_currentSocket.EndReceive(asyn);
                char[] chars          = new char[iRx + 1];
                System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
                int           charLen = d.GetChars(socketData.dataBuffer, 0, iRx, chars, 0);
                System.String szData  = new System.String(chars);
                AppendToRichEditControl(socketData.string_RemoteEndPoint.ToString() + ":" + szData);
                richTextBox4.AppendText(socketData.string_RemoteEndPoint.ToString() + ":" + szData + "\r\n");
                Socket workerSocket = socketData.m_currentSocket;
                byte[] byData       = Encoding.ASCII.GetBytes(szData);
                //workerSocket.Send(byData);
                WaitForData2(socketData.m_currentSocket, socketData.m_clientNumber);
            }
            catch (ObjectDisposedException)
            {
                System.Diagnostics.Debugger.Log(0, "1", "\nOnDataReceived: Socket has been closed\n");
            }
            catch (SocketException se)
            {
                if (se.ErrorCode == 10054)
                {
                    string msg = socketData.string_RemoteEndPoint.ToString() + " Disconnected";
                    AppendToRichEditControl(msg);
                    m_workerSocketList[socketData.m_clientNumber - 1] = null;
                    UpdateClientListControl();
                }
                else
                {
                    MessageBox.Show(se.Message);
                }
            }
        }