Hallo ich bin neu gier Grüße euch alle.
ich habe folgendes Problem:
ich sende ein MSGBOX | Hallo vom Client
es kommt hier noch richtig an:
Code:
procedure TServer.Connect;
var
Buffer: Array[0..8192] Of AnsiChar;
iRecv: Integer;
Begin
if (WSAStartup($0202, wsaData) <> 0) then
begin
Writeln('Unable to start winsock, unable to continue');
Readln;
Exit;
end;
Close := False;
repeat
//Prepare a listen socket to be used for our connection
//and declare its host/port information
hSocket := Socket(AF_INET, SOCK_STREAM, 0);
Addr.sin_family := AF_INET;
Addr.sin_port := htons(hPort);
Addr.sin_addr.S_addr := INET_ADDR(PAnsiChar(GetIPFromHost(hHost)));
Writeln('Connecting to ' + GetIPFromHost(hHost));
//Attempt the connection using our socket
if (Winsock.Connect(hSocket, Addr, SizeOf(Addr)) = 0) then
begin
Writeln('Connected to host');
//Notify our connected client of the connection and send
//our information
SendData('ADDNEW|' + UserName + '|' + CompName + '|' + 'Awaiting commands');
//Attempt to receive data from our socket.
ZeroMemory(@Buffer, SizeOf(Buffer));
iRecv := Recv(hSocket, Buffer, SizeOf(Buffer), 0);
while ((iRecv > 0) and (iRecv <> INVALID_SOCKET)) do // <-----------Im Buffer ist alles ok
begin
ReceiveData(hSocket, @Buffer); // <-----------Im Buffer ist alles ok
ZeroMemory(@Buffer, SizeOf(Buffer));
iRecv := Recv(hSocket, Buffer, SizeOf(Buffer), 0);
end;
Und dann der Fehler wo ich nicht weis woran es liegt:
Code:
procedure TServer.ReceiveData(Socket: TSocket; Buffer: PByte);
var
Data: AnsiString;
strArr: TDynStringArray;
begin
//Convert our data to a AnsiString and trim it
Data := AnsiString(Buffer);
Data := Trim(Data); // <-----------Im Buffer Sind nurnoch Fragezeichen
if Length(Data) > 0 then begin // <-----------in Data Sind die Fragezeichen
//Setup our dynamic array structure
StrArr := Explode('|', Data); // <-----------in Data Sind die Fragezeichen
//Display incoming message (if strArr[0] = 'MSGBOX')
if StrArr[0] = 'MSGBOX' then begin
MessageBox(0,PChar(StrArr[1]),'Winsock Example',MB_OK + MB_ICONINFORMATION);
end;
Und die Fragezeichen gehen so durch Explode durch und am ende bei ZeroMemory(@Buffer, SizeOf(Buffer)); ist die Nachricht wieder richtig zusehen im Buffer was ist da dazwischen was falsch ist kann mir da jemand helfen???
ich kann auch den kompletten Text posten bei belieben oder auch das Ganze Projekt auf mein Server hochladen und als Download anbieten mit Client und allem eben.