Witam ostatnio zainteresowałem się socketami asynchronicznymi.
moje pytanie dotyczy odbierania danych
private static void Recive(Socket socket)
{
StateObject obj = new StateObject();
obj.workSocket =socket;
socket.BeginReceive(obj.buffer, 0, StateObject.BufferSize, SocketFlags.None, new AsyncCallback(ReciveCallBack), obj);
}
private static void ReciveCallBack(IAsyncResult ar)
{
StateObject obj = (StateObject)ar.AsyncState;
Socket socket = obj.workSocket;
int BufferSize = socket.EndReceive(ar);
String str = Encoding.ASCII.GetString(
obj.buffer, 0, BufferSize);
if (str.IndexOf("<e>") != -1)
{
Console.WriteLine(str);
}
else
{
socket.BeginReceive(obj.buffer, 0, StateObject.BufferSize, SocketFlags.None, new AsyncCallback(ReciveCallBack), obj);
}
}
rozumiem ze w ten sposób transmisja danych jest ciągła aż nie pojawi się "<e>".
Co sie stanie jak pojawi sie ten magiczny kod? Samo odbieranie danych się zakończy ale wywołując znowu Recive() proszę program o odczytywanie zupełnie nowych danych ?