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

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

Почему сообщения отсылаются не попорядку?... =((( [D7, WinXP]


Страницы:   1 2

Andrewtitoff ©   (2008-02-14 22:31:00) 

Здравствуйте!, я использую пару клиент-сервер для реализации чего то вроди чата с расширенныли функциями

Вот часть кода:

......
procedure TMyChat.SendCommand(s:string);
begin
TcpClient1.Active := True;
 try
   if TcpClient1.Connect then
     begin
     TcpClient1.Sendln(s);
     Edit.Clear;
     end;
 finally
   TcpClient1.Disconnect;
 end;
end;
.............
procedure TMyChat.Button1Click(Sender: TObject);
var
c : boolean;
begin
Display.Lines.Add(Edit.Text);
........
if UpperCase(Edit.Text) ='DIR' then
Begin
SendCommand('Command : DIR');
c:=true;
end;
..........
procedure TMyChat.TcpServer1Accept(Sender: TObject;
 ClientSocket: TCustomIpClient);
var
.......
begin
try
CurrentCommand:=ClientSocket.Receiveln;
Display.Lines.Add('Server : '+CurrentCommand);
.........
if CurrentCommand='Command : DIR' then
begin
   GetDir(0,CurrentDir);
   SEndCommand('Директория : '+CurrentDir);
   SEndCommand('-------------------------------------');
  if FindFirst(CurrentDir + '\*.*', faAnyFile, tt) = 0 then
  begin
    repeat
      if tt.Attr = faDirectory then
      SendCommand('[DIR]'+tt.Name)else
      SendCommand(tt.Name+' [Size : '+inttostr(tt.SIZE)+']');
    until FindNext(tt) 0;
    FindClose(tt);
  end;
   SEndCommand('Конец-------------------------------');
end;
......
except
  on E:Exception do
  begin
    if ClientSocket.Connected then
      ClientSocket.Sendln('-ERR Raised exception with message: '+E.Message)
    else
      raise;
  end;
end;
CurrentCommand:='';
end;



а получается иногда нормально, но чаще байда на пример такая:

dir
Server : Директория : C:\Documents and Settings\Felix\Рабочий стол\EXT_New !!!_My_Chat_TcpServer&TcpClient
Server : My_Chat.dpr [Size : 238]
Server : [DIR]..
Server : [DIR].
Server : -------------------------------------
Server : My_Chat.dproj [Size : 3054]
Server : My_Chat.dproj.local [Size : 1850]
Server : My_Chat.exe [Size : 494080]
Server : My_Chat.identcache [Size : 199]
Server : My_Chat.res [Size : 5280]
Server : My_Chat_.dcu [Size : 19486]
Server : My_Chat_.dfm [Size : 2279]
Server : My_Chat_.pas [Size : 8260]
Server : Конец-------------------------------


Сергей М.   (2008-02-15 14:37:00) [21]

10061 = WSAECONNREFUSED = The attempt to connect was forcefully rejected = Запрос на соединение (попытка коннекта к заданному порту) отвержен сервером (т.е. указанный клиентом порт сервера на момент попытки коннекта не активен)


Andrewtitoff   (2008-02-15 14:29:00) [22]

Небольшой вопросик не по теме:

Чем может быть вызвана ошибка "Cannot remove shell notification icon"?


Andrewtitoff   (2008-02-15 14:27:00) [23]

а в чем тогда может быть дело?


Сергей М.   (2008-02-15 14:21:00) [24]

Между файловыми атрибутами и упомянутой ошибкой нет никакой связи.


Andrewtitoff   (2008-02-15 11:25:00) [25]

Может это все брандмауэр виндовсовский?...


Andrewtitoff   (2008-02-15 11:10:00) [26]

Ясно, тут кстати вылезла еще одна проблемка, когда я пытаюсь переслать файл как я понял с системными атрибутами (с:\autorun.exe) то выскакивает ошибка Socket Error 10061, она кстати выскакивает периодически в процедуре DIR на удаленном конце при просмотре корня...


Сергей М.   (2008-02-15 10:43:00) [27]


> Andrewtitoff ©   (15.02.08 10:28) [10]


Понятно.

Но в любом случае вывод инф-ции в визуальный VCL-контрол следует выполнять в основномпотоке приложения.


Andrewtitoff   (2008-02-15 10:28:00) [28]

2 Сергей М.

>Зачем ее выводить ? Для протокола что ли ?

Ну это типа терминала, там мне нужно отправлять туда и обратно файло, как я без вывода информации то это делать буду, тем более я же привел одну из процедур (DIR), как я еще без вывода узнаю о содержимом удаленного винта?...


Сергей М.   (2008-02-15 10:21:00) [29]


> Ну вроде работает


Рано или поздно настанет "судный день" - в этот день ты обязательно получишь исключением (например, "canvas doesn't allow drawing") по лбу)


> как выводить информацию


Зачем ее выводить ? Для протокола что ли ?


> за основу этой проги взят пример из седьмой дельфи (Chat)


Там совсем другие компоненты использованы.


Andrewtitoff   (2008-02-15 10:13:00) [30]

2 Сергей М.
Ну вроде работает...
А как выводить информацию тогда, мне же так никто и не сказал..., кстати за основу этой проги взят пример из седьмой дельфи (Chat)...


Сергей М.   (2008-02-15 09:23:00) [31]


> Display.Lines.Add(


Я не перестаю удивляться, как тебе нравится раз за разом получать одними и теми же граблями по одному и тому же лбу).. Мазохист ?)

Ты уже раза 3-4 приводил фрагменты своих обработчиков OnAccept, всякий раз тебе было сказано о недопустимости обращений к визуальным VCL-контролам в обработчике этого события, но ты по-прежнему делаешь одну и ту же упомянутую грубую ошибку)


Slym   (2008-02-15 06:11:00) [32]

Slym ©   (15.02.08 6:10) [5]
TcpClient1.Sendln

ClientSocket.Sendln


Slym   (2008-02-15 06:10:00) [33]

Andrewtitoff ©   (14.02.08 22:31)
SendCommand

Ты забыл добавить что долго отправляет/принамает еще...
твой SendCommand обрывает соединение
finally
  TcpClient1.Disconnect;
end;

и отправка идет в несколько соединений, а тут порядок никто не гарантирует!
если заменить SendCommand на TcpClient1.Sendln все должно работать


ketmar   (2008-02-15 02:52:00) [34]

тьфу!

---
Understanding is not required. Only obedience.


ketmar   (2008-02-15 02:51:00) [35]

>[2] Andrewtitoff © (2008-02-14 22:44:00)
порядок даже не пытался ачмоиовать.

п с финдом… хэдп читал? я вижу, что нет.

---
Understanding is not required. Only obedience.


Andrewtitoff   (2008-02-14 22:44:00) [36]

2 ketmar
Сообщения выводятся не в том порядке, в котором я их отправляю...
А что не так с FindXXX?


ketmar   (2008-02-14 22:37:00) [37]

ну, не делай «байды».

собственно — а что не так? (помимо неверной работы с FindXXX)

---
Understanding is not required. Only obedience.


Страницы:   1 2

Наверх

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