Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.08;
Скачать: CL | DM;

Вниз

Реализация на стороне игры   Найти похожие ветки 

 
Dr.Nemo   (2005-08-01 14:19) [0]

поток не работает


 
Dr.Nemo   (2005-08-01 14:20) [1]

procedure Arena_PingThread;
begin
Arena("ping", false);
end;
   
procedure Arena_Ping;
var
 id : DWORD;
begin
CreateThread(nil, 128, @Arena_PingThread, nil, 0, id);
end;


 
GLFox ©   (2005-08-01 14:24) [2]

function Arena_PingThread(pParam: Pointer): Integer; stdcall;


 
Dr.Nemo   (2005-08-01 14:43) [3]

function Arena(const mode: string; get: boolean): string;
const
 host = "host.ru";
 port = 25666;
var
 wData : WSADATA;
 addr  : sockaddr_in;
 sock  : integer;
 error : integer;
 buf   : array [0..1023] of Char;
 str   : string;
 phe   : PHostEnt;
begin
//Инициализация сокета
Result := "";
WSAStartup($0101, wData);
phe := gethostbyname(PChar(string(host)));
if phe = nil then
 begin
 WSACleanup;
 Exit;
 end;

sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if sock = INVALID_SOCKET then
 begin
 WSACleanup;
 Exit;
 end;

addr.sin_family := AF_INET;
addr.sin_port   := htons(80);
addr.sin_addr   := PInAddr(phe.h_addr_list^)^;

error := connect(sock, addr, sizeof(addr));
if error = SOCKET_ERROR then
 begin
 closesocket(sock);
 WSACleanup;
 Exit;
 end;

// Составляем строку запроса
str := "GET http://" + host + "/?action=arena&mode=" + mode;
if mode = "ping" then
 str := str + "&port=" + IntToStr(port);
str := str + " HTTP/1.0"#13#10#13#10;

// отправляем
send(sock, str[1], Length(str), 0);

// Если нужен ответ то принимаем
if get then
 begin
 ZeroMemory(@buf, 1024);
 error := recv(sock, buf, 1024, 0);
 while error > 0 do
  begin
  Result := Result + Copy(buf, 0, error);
  error  := recv(sock, buf, 1024, 0);
  end;
 end;
// Закрываем сокет – завершаем работу с сетью
closesocket(sock);
WSACleanup;
   
// Вырезаем из ответа то что нам нужно, т.е. отрезаем HTTP заголовки
(на этом месте)if get and Result <> "" then
 Result := Copy(Result, pos(#13#10#13#10, Result) + 4, Length(Result));
end;

----------------------------------
при компеляции выдаёт Incompatible types: "String" and "Boolean"


 
Alexander Panov ©   (2005-08-01 14:45) [4]

ПОльзуйся скобками. Это ж просто:
if (get) and (Result <> "" )


 
GLFox ©   (2005-08-01 14:46) [5]

if get and (Result <> "") then


 
Dr.Nemo   (2005-08-01 15:14) [6]

Добрые старейшены вы мне не сможите подсказать чтоб результат ответа выводился в Memo


 
GLFox ©   (2005-08-01 15:18) [7]

Memo.Lines.Add(Arena("ping", false));


 
Dr.Nemo   (2005-08-01 15:36) [8]

Str := Arena("view", true); // для получения списка серверов
мне нужно для получения списков серверов



Страницы: 1 вся ветка

Текущий архив: 2006.01.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1134849844
malenkii_myk
2005-12-17 23:04
2006.01.08
Данные из TFileStream в TString, как реализовать ?


6-1127467489
Sirus
2005-09-23 13:24
2006.01.08
Перехват нажатия на ссылку в TWebBrowser


2-1135061079
Shtukos
2005-12-20 09:44
2006.01.08
Как скопировать в память канву


14-1133772225
Slider007
2005-12-05 11:43
2006.01.08
Задачка. Сижу парю мозги.


14-1134372111
Pave/\
2005-12-12 10:21
2006.01.08
Citrix