public void OnDataReceived(IAsyncResult asyn) { try { SocketPacket theSockId = (SocketPacket)asyn.AsyncState; int iRx = theSockId.thisSocket.EndReceive(asyn); char[] chars = new char[iRx + 1]; System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder(); int charLen = d.GetChars(theSockId.dataBuffer, 0, iRx, chars, 0); System.String szData = new System.String(chars); //UpdateLogControl(szData); if (szData != string.Empty) { if (szData.Contains("Folder Send")) { settings.Filename = szData.Substring(13); UpdateLogControl("The Folder is: " + settings.Filename); folder = true; LaunchReciever(); } if (szData.Contains("Launch")) { settings.Filename = szData.Substring(8); UpdateLogControl("The file is: " + settings.Filename); folder = false; LaunchReciever(); } if (szData == "Server Down") { UpdateLogControl("Server Down, Disconnecting"); CloseSocket(); } else { UpdateLogControl(szData); } } WaitForData(); } catch (ObjectDisposedException ex) { System.Diagnostics.Debugger.Log(0, "OnDataReceived", "Socket closed " + ex.Message); } catch (SocketException se) { UpdateLogControl(se.Message); CloseSocket(); } }
public void WaitForData() { try { if (m_pfnCallBack == null) { m_pfnCallBack = new AsyncCallback(OnDataReceived); } SocketPacket theSocPkt = new SocketPacket(); theSocPkt.thisSocket = m_clientSocket; // Start listening to the data asynchronously m_result = m_clientSocket.BeginReceive(theSocPkt.dataBuffer, 0, theSocPkt.dataBuffer.Length, SocketFlags.None, m_pfnCallBack, theSocPkt); } catch (SocketException se) { UpdateLogControl(se.Message); CloseSocket(); } }