PDA

Просмотр полной версии : [Помогите!] многопотчность и соккет


Number/1/
06.11.2011, 16:57
возникла проблема при использовании многопоточности , соккет не коннектится к серверу , хотя пишет что приконектился ,как бы решить проблему?

Dinmaite
06.11.2011, 17:01
А в чём выражается отсутствие коннекта к серверу, учитывая то, что сам сокет отвечает что коннект произведён?

Number/1/
06.11.2011, 17:27
А в чём выражается отсутствие коннекта к серверу, учитывая то, что сам сокет отвечает что коннект произведён?
я когда нахожусь на карте ,и соккет удачно конектится к серверу ,то у меня должно разорваться соединение с картой
А в данном случае я нахожусь на карте ,програмка пишет что вошла на карту ,но соединение не розрывается

Dinmaite
06.11.2011, 18:09
Скачай себе TCPView и посмотри есть коннект или нет. Ато эти косвенные методы совсем не точны.

Number/1/
06.11.2011, 18:14
Скачай себе TCPView и посмотри есть коннект или нет. Ато эти косвенные методы совсем не точны.
нет тут всё точно сокк приконектился меня выкинуло ,но тут такого не происходит

Dinmaite
06.11.2011, 20:25
Значит таки ошибка в коде. Возможно не были переданы какие-либо данные для авторизации.

Number/1/
06.11.2011, 21:33
Reg.Expression := 'dosid=(.*?)'#39';';
if Reg.Exec(S) then SID := Reg.Match[1] else begin Status('Не удалось найти SID!'); Exit; end;
Reg.Expression := '"uid": "(.*?)","';
if Reg.Exec(S) then ID := Reg.Match[1] else begin Status('Не удалось найти ID!'); Exit; end;


procedure TBot.LoginToGame;
begin
InitDisconnect := False;
status('Соединение с игрой...');
Sock.Host := MapIP;
Sock.Address := MapIP;
Sock.Active := True;
Sock.Socket.Connect(1);
FTextToSend := 'LOGIN|'+ID+'|'+SID+'|4.1'#10#00'PNG'#10#00;
Sock.Socket.Write(1);
PNG.Enabled := True;
Lab.Enabled := True;
end;

для входа нужен ид и сид я его удачно вытягиваю ,после использую для входа на карту (это только кусок кода)

Number/1/
10.11.2011, 19:43
ну так кто нибудь поможет?

R.A.Z.O.R
11.11.2011, 15:35
Дело в том, что в потоке не проходит присвоение процедуры объекту, например

SellerTime.OnTimer := SellTime;



procedure TMyThread.SellTime(Sender: TObject);
begin
{ т.д. и т.п. }
end;


При том, что присвоение НЕ в потоке проходит, и таймер выполняет свою работу.

Тоже хотел бы узнать, баг Делфи это, или наш.