Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   TCP/IP Client (https://www.delphipraxis.net/187485-tcp-ip-client.html)

Tek 3. Dez 2015 08:29


TCP/IP Client
 
Hallo zusammen !

ich habe Client in C# programmiert, der sollte die daten im Server anfragen und der Server sollte Ihn beantworten,
aber leider funktioniert nicht , ich weiß nicht wo der fehler liegt. bitte kann jemand mir helfen...

Ich habe einen Client, der mit delphi programmiert wurde, funktioniert einwandfrei.

Delphi Code:

Delphi-Quellcode:
procedure TForm1.Memo_SendKeyPress(Sender: TObject; var Key: Char);
var
  s: string;
  i: integer;
  t_start : tdatetime;
begin
    case Key of
      #13: if Memo_Send.Lines.Count>0 then
        begin
           s := Memo_Send.Lines[Memo_Send.Lines.Count-1];
           with IdTCPClient do try
                IOHandler.Writeln(s);
                s:= IOHandler.ReadLn(#10#13,300);
                Memo_Receive.Lines.Add(s);
           finally end;
        end;
    end;
end;
Mein C# Code:


Code:
            // send from Client to Server          
            NetworkStream nwStream = client.GetStream();
            byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes(data);
            Console.ForegroundColor = ConsoleColor.Yellow;
            nwStream.Write(bytesToSend, 0, bytesToSend.Length);
            Console.WriteLine("Sending:" + data);


            // Received data from Server
            byte[] bytesToRead = new byte[client.ReceiveBufferSize];
            Int32 bytesRead = nwStream.Read(bytesToRead, 0, client.ReceiveBufferSize);
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("Received:" + Encoding.ASCII.GetString(bytesToRead, 0, bytesRead));
Danke im Voraus

nuclearping 3. Dez 2015 09:40

AW: TCP/IP Client
 
Hab keine Ahnung, wie die Sockets von C# gehandhabt werden, bzw. was er da für Funktionen anbietet. Was mir aber auffällt ist, dass du in Delphi
Delphi-Quellcode:
IOHandler.WriteLn(s);
verwendest, während du in C# aber nur
Delphi-Quellcode:
nwStream.Write(bytesToSend, 0, bytesToSend.Length);
nutzt.

Der Unterschied ist, dass
Delphi-Quellcode:
IOHandler.WriteLn
den String mit CRLF an den Handler übergibt, während
Delphi-Quellcode:
nwStream.Write
das nicht macht und du deswegen möglicherweise keine Antwort erhältst, weil der String in dem Fall garnicht erst rausgeht.

Lange Rede, kurzer Sinn: Versuche mal ein CRLF an deinen
Delphi-Quellcode:
bytesToSend
-Stream zu hängen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz