Registriert seit: 18. Mai 2003
634 Beiträge
|
Daten senden: Client->Server->Client
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!
|
|
Zitat
|