Einzelnen Beitrag anzeigen

Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#1

Daten senden: Client->Server->Client

  Alt 28. Apr 2004, 13:27
Hi ihrs!
Kann mir mal jemand helfen:

Ich will, dass sich mein Client mit dem Server verbindet, ihm einen Befehl sendet, was zu tun ist und der Server dann dem Clienten antwortet.

Mein Server:
Delphi-Quellcode:
program Project1;

uses
  Windows,
  WinSock,
  Unit1 in 'Unit1.pas';

var
  wsaData: TWSADATA;
  T:DWord;
  s: TSocket;
  sock: sockaddr_in;
  conSock: TSocket;
  Empf: string;
  senden:string;
begin
if (WSAStartup(MAKEWORD(2,0),wsaData)) <> 0 then
  exit;
s := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if s = INVALID_SOCKET then
  exit;
ZeroMemory(@sock, sizeof(sock));
sock.sin_addr.S_addr := INADDR_ANY;
sock.sin_family := AF_INET;
sock.sin_port := htons(1223); // PORT
if (bind(s, sock, sizeof(sock))) = SOCKET_ERROR then
  exit;
if (listen(s, 10)) = SOCKET_ERROR then
  exit;
SetLength(Empf,8192);
while true do
  begin
  conSock := accept(s, nil, nil);
  if conSock <> INVALID_SOCKET then
    begin
    recv(conSock, Empf[1], 2, 0);
    if Empf='01'then
      begin
      Senden:='Hallo';
      send(conSock,Senden[1],Length(Senden),0);
      end;
    end;
end;

end.
Mein Client:
Delphi-Quellcode:
function GetData(const URL: String): string;
var
  S: TSocket;
  A: SOCKADDR_IN;
  W: TWsaData;
  H: pHostEnt;
  Senden: String;
begin
  SetLength(result,8192);
  if WsaStartup(MakeWord(1, 1), W) = 0 then
  begin
    H := GetHostByName(PChar(URL));
    if H <> nil then
    begin
      FillChar(A, SizeOf(A), 0);
      A.sin_family := AF_INET;
      A.sin_addr.S_addr := PDWord(H.h_addr_list^)^;
      A.sin_port := htons(1223);
      S := Socket(AF_INET, SOCK_STREAM, 0);
      if S <> INVALID_SOCKET then
      begin
        if Connect(S, A, SizeOf(A)) = 0 then
          begin
          Senden:='01';
          send(S,Senden[1],Length(Senden),0);
          recv(S, result[1], Length(result), 0);
          end;
        CloseSocket(S);
      end;
    end;
  end;
  WSACleanup;
end;
Vielen Dank schon mal!
  Mit Zitat antworten Zitat