private void Accepting(IAsyncResult res) { DoWork.Set(); Socket Listener = (Socket)res.AsyncState; Socket Handel = Listener.EndAccept(res); if (AcceptNewConnection != null) AcceptNewConnection((ConnectedClients.Count + 1), Handel.RemoteEndPoint.ToString()); switch (selectedMode) { case CommunicationMode.Messaging: APSocket.DataStruct state = new APSocket.DataStruct(); state.socket = Handel; APSocket.AcceptedClient temp = new APSocket.AcceptedClient { id = (ConnectedClients.Count + 1), IPAddress = Handel.RemoteEndPoint.ToString(), acceptedSocket = Handel }; ConnectedClients.Enqueue(temp); Handel.BeginReceive( state.buffer , 0 , APSocket.DataStruct.BufferSize , 0 , new AsyncCallback(ReadCallback), state); break; case CommunicationMode.StreamFile: APSocket.NetStream currentStream = new APSocket.NetStream(Handel, false); if (ReciveByteIntterupt != null) ReciveByteIntterupt(Handel, currentStream.ReadByte()); Handel.Close(); break; case CommunicationMode.LengthFirst: APSocket.DataStructLenghFirst stateLenFirst = new APSocket.DataStructLenghFirst(); stateLenFirst.socket = Handel; Handel.BeginReceive( stateLenFirst.buffer , 0 , APSocket.DataStructLenghFirst.BufferSize , 0 , new AsyncCallback(ReadFirstLenCallback), stateLenFirst); break; } }
/// <summary> /// Start Reciving /// </summary> public void ReceiveAsync() { try { APSocket.DataStruct state = new APSocket.DataStruct(); state.socket = clientsocket; clientsocket.BeginReceive(state.buffer, 0, APSocket.DataStruct.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } catch (Exception e) { Console.WriteLine(e.ToString()); } }