void __fastcall TFormMain::ServerClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
int Type;
Socket->ReceiveBuf(&Type,sizeof(Type));
}
Работа с сокетами...
Код:
Допустим я хочу прочитать только первые 4 байта придящего сообщения и выполняю верхний код. НО.
Заметил такую вещь, что каждый раз при вызове
Socket->ReceiveBuf(&Type,sizeof(Type));
Событие ServerClientRead срабатывает по новому, до тех пор пока Socket->ReceiveLength() не будет равна нулю...и получается что в итого Type содержит последние 4 байта.... и это очень напрягает... Пришлось делать так...
Код:
int Type=0;
void __fastcall
TFormMain::ServerClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
if (Type==0) Socket->ReceiveBuf(&::Type,sizeof(::Type));
ShowMessage(::Type);
::Type==0;
}
void __fastcall
TFormMain::ServerClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
if (Type==0) Socket->ReceiveBuf(&::Type,sizeof(::Type));
ShowMessage(::Type);
::Type==0;
}
Но это очень напрягает... Неужели это правильно?