AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Problem mit ClientSocket.Socket.SendText
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit ClientSocket.Socket.SendText

Ein Thema von Tim-94 · begonnen am 14. Jul 2009 · letzter Beitrag vom 14. Jul 2009
Antwort Antwort
Benutzerbild von Tim-94
Tim-94

Registriert seit: 3. Jul 2008
Ort: Hamburg
132 Beiträge
 
Delphi 10.3 Rio
 
#1

Problem mit ClientSocket.Socket.SendText

  Alt 14. Jul 2009, 19:13
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:
  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;
PS: Die beiden Variablen GetUserName und ComputerName funktionieren.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Problem mit ClientSocket.Socket.SendText

  Alt 14. Jul 2009, 19:16
Hallo,

kann es sein, dass am Ende der Rückgabe von Computername noch ein #0 steht?
Vielleicht solltest Du es mal mit

trim(ComputerName) probieren.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Problem mit ClientSocket.Socket.SendText

  Alt 14. Jul 2009, 19:21
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...
  Mit Zitat antworten Zitat
Benutzerbild von Tim-94
Tim-94

Registriert seit: 3. Jul 2008
Ort: Hamburg
132 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Problem mit ClientSocket.Socket.SendText

  Alt 14. Jul 2009, 19:21
Jo danke, es geht!
So einfach kann ein Problem zu lösen sein^^
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 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