Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ClientSocket и ServerSocket [D7, XP]


Страницы:   1 2

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);

это что за такое?


> все нормально принимается, только после того как сообщение
> принялось у меня само приложение закрывается (. из чего
> это может быть ?

космические лучи


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо