![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ClientSocket и ServerSocket [D7, XP]
Aleksandr © (2008-03-20 17:48:00)у меня два вопроса по сокетам )
1. отправляю сообщение
TMess = packed record
procedure TForm1.Button1Click(Sender: TObject);
var Mess: TMess;
begin
Mess.ID_DB:='3243643214364654645';
Mess.ID_CLIENT:=strComp.Text;
Mess.command:='send_mess';
Mess.Txt:=strMess.Text;
ClientSocket.Host:=strComp.Text;
ClientSocket.Active:=true;
ClientSocket.Socket.SendBuf(Mess,SizeOf(TMess));
ClientSocket.Active:=false;
end;
почему сообщение отправляется только после того как я второй раз нажму на кнопку ?
2. принимаем сообщение
procedure TForm1.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
buf: array[1..MaxSize] of byte;
Size: Word;
Mess: ^TMess;
begin
memo1.Lines.Add('читаем');
Size:=Socket.ReceiveLength; {Принимаемое кол-во байт}
Socket.ReceiveBuf(buf,Size);
New(Mess);
BufToPct(Mess^,buf,Size);
memo1.Lines.Add(Mess^.ID_DB);
memo1.Lines.Add(Mess^.ID_CLIENT);
memo1.Lines.Add(Mess^.command);
memo1.Lines.Add(Mess^.Txt);
memo1.Lines.Add('конец');
Dispose(Mess);
end;
все нормально принимается, только после того как сообщение принялось у меня само приложение закрывается (. из чего это может быть ?
Palladin (2008-03-20 17:59:00) [21]
> почему сообщение отправляется только после того как я второй
> раз нажму на кнопку ?
уверен? а по каким признакам ты определяешь что оно не отправилось на первый раз, но отправилось на второй?
> ClientSocket.Socket.SendBuf(Mess,SizeOf(TMess));
почему не анализируется результат?
> Size:=Socket.ReceiveLength; {Принимаемое кол-во байт}
> Socket.ReceiveBuf(buf,Size);
почему не анализируется результат?
> BufToPct(Mess^,buf,Size);
это что за такое?
> все нормально принимается, только после того как сообщение
> принялось у меня само приложение закрывается (. из чего
> это может быть ?
космические лучи