Przesyłanie danych GETem za pomocą Winsock

0

Witam,
Chciałbym napisać przesyłanie danych GET'em za pomocą Winsock w delphi lecz mam pewien problem.

Mój kod :

procedure SendData;
var
  wsa : WSAData;
  ErrorCode : Integer;

  Gniazdo : Integer;
  socket_info: sockaddr_in;
  Handle : THandle;
  Buffer : array[0..1024] of char;
  Odebralem : array[0..1024] of char;

begin
  ErrorCode := WSAStartup(MAKEWORD(2,0),wsa);
  if (ErrorCode = SOCKET_ERROR) then
    MessageBox(0, 'Nie mozna wystartowac gniazda', 'WinSock', MB_OK);

  Gniazdo := Socket(AF_INET, SOCK_STREAM, 0);
  socket_info.sin_family := AF_INET;
  socket_info.sin_addr.S_addr := inet_addr(PChar('xxxxx'));
  socket_info.sin_port := htons(80);

  ErrorCode := connect(Gniazdo, socket_info, SizeOf(socket_info));
  if (ErrorCode = SOCKET_ERROR) then
    MessageBox(0, 'Nie mozna podlaczyc', 'WinSocks', MB_OK);

  WSAAsyncSelect(Gniazdo,Handle,WM_USER, FD_READ or FD_CONNECT or FD_ACCEPT);
    Buffer := 'GET http://adres.com/data.php?'  +
    '&pierwszy='+Zmienna;

  send(Gniazdo, Buffer, SizeOf(Buffer), 0);
  Recv(Gniazdo, Odebralem, SizeOf(Odebralem), 0);

end;

Gdy chce wysyłac dane to nie moge bo kłoci mi się z typami Strin i Array.

Buffer := 'GET http://adres.com/data.php?'  +
    '&pierwszy='+Zmienna;
Zmienna

to string

,a buffer to tablica char. 
Gdy zmieniam w zmiennej buffer na string, wtedy jest wszystko ok,ale nie wysyła danych  : /.

 Mógłby mi pomóc rozwiązać problem?

Pozdrawiam
1

No to przekopiuj zawartość łańcucha do bufora np. procedurą Move i po problemie niezgodności typów.

1

Czy jest sens wymyślać koło na nowo? Skoro do TCP świetnie nadaje się to http://piechnat.pl/article/simpletcp.html - używam/łem wielokrotnie pod WinAPI. Imo jest super. Ale jak chcesz.

0

Dziękuję za odpowiedzi. Skorzystam z SimpeTCP, co podał Olesio. Wcześniej o nim nie słyszałem.
Temat można zamknąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1