![]() |
Problem mit ClientSocket.Socket.SendText
Hi, ich habe folgendes Problem:
Ich habe einen kleinen Chat programmiert bei dem ich die Komponenten TClientSocket und TServerSocket verwende. Dieser Chat funktioniert auch soweit gut, mein einziges Problem ist, dass der Client einen Text, der zu lang ist, nicht vollständig sendet. Er sendet den Text nämlich nur bis einschließlich dem Compputernamen, der ja in der Variable übergeben wird.
Delphi-Quellcode:
PS: Die beiden Variablen GetUserName und ComputerName funktionieren.
if (ClientSocket1.Active) then begin // noch online?
ClientSocket1.Socket.SendText('Observer-Client Online -> '+GetUserName+' am PC: '+ComputerName+' - Am '+DatetoStr(Date)+' um '+TimetoStr(Time)+' Uhr!'); end; |
Re: Problem mit ClientSocket.Socket.SendText
Hallo,
kann es sein, dass am Ende der Rückgabe von Computername noch ein #0 steht? Vielleicht solltest Du es mal mit
Delphi-Quellcode:
probieren.
trim(ComputerName)
Grüße Klaus |
Re: Problem mit ClientSocket.Socket.SendText
Ich möchte auch mitraten: Kann es sein dass du beim Empfänger (in diesem Falle das OnClientRead des TServerSockets) erwartest, dass die Texte in einem Aufruf mit ReceiveText ankommen, welche du auch so in einem Stück versendet hast?
TServerSocket/TClientSocket versenden nur Rohdaten und implementieren kein Protokoll. Durch diesen Fakt garantieren sie dir nur eins: die Daten kommen in der gleichen Bytereihenfolge an wie sie versendet werden oder es gibt einen Fehler. Aber sie garantieren dir keine Teilung der Daten. Die Daten können dabei unterteilt werden wie sie lustig sind - im schlimmsten Falle (z.B. schlechte Verbindung) bekommst du alle Minute mal ein Zeichen. Du musst dafür sorgen die Daten ordentlich zu handeln und du musst dafür sorgen zu wissen ob eine Nachricht vollständig empfangen wurde oder nicht bevor du sie verarbeitest. Von daher musst du dir ein Protokoll ausdenken und implementieren. Die Sockets bieten dir nur eine Schnittstelle um Bytes zu übertragen. Such hier im Forum und du wirst genügend Beispiele finden. @Klaus01: er baut einen String zusammen, der Parameter ist genauso ein String und damit wird in diesem Falle #0 unerheblich. Selbst wenn es mit in dem String sein sollte, würde es einfach so mitgesendet werden. EDIT: Warum auch immer das damit geht... |
Re: Problem mit ClientSocket.Socket.SendText
Jo danke, es geht!
So einfach kann ein Problem zu lösen sein^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz