AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Winsock Example Frage

Offene Frage von "CoYoTE"
Ein Thema von CoYoTE · begonnen am 11. Aug 2010 · letzter Beitrag vom 12. Aug 2010
Antwort Antwort
blackfin
(Gast)

n/a Beiträge
 
#1

AW: Anfänger am Werk HILFEEEEE!!

  Alt 11. Aug 2010, 08:26
Ich glaube, du hast ausversehen zweimal den Server-Quellcode gepostet anstatt jeweils Server und Client.

Generell wäre es sicher für "uns" hilfreich, wenn du dein Problem noch etwas spezifizierst.
Es ist auch allgemein eine gute Idee, bei der Beschreibung eines Problems erst einmal kurz und knapp zu erläutern, was das Programm eigentlich machen soll und was dabei nicht funktioniert.
Auch wenn hier einige "Profis" sind, so ist oft bei einem zwei Seiten langen Quellcode nicht auf den ersten Blick ersichtlich, was der Code eigentlich ausführen soll. In diesem Fall handelt es wohl um einen Servercode, der Daten von einem Client empfangen und zu diesem senden soll.
Was funktioniert daran nicht?

Geändert von blackfin (11. Aug 2010 um 08:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

AW: Anfänger am Werk HILFEEEEE!!

  Alt 11. Aug 2010, 08:29
Hi!

Allgemein wäre es auch besser, nur für das Problem relevante Teile zu zeigen, anstatt Unmengen von Code, die vllt. gar nix mit dem Fehler zu tun haben.


Liebe Grüße,
Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#3

AW: Anfänger am Werk HILFEEEEE!!

  Alt 11. Aug 2010, 08:32
Wie stelle ich Fragen richtig?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
CoYoTE

Registriert seit: 11. Aug 2010
8 Beiträge
 
#4

AW: Winsock Example Frage

  Alt 11. Aug 2010, 09:50
Okay gut sage ja ich bin das erstemal in einem Forum sorry deswegen.

Also es geht darum.
dieses beample wo ich im Internet gefunden habe wurde in der Delphi Version 2006 gemacht.
um es zum laufen zubringen für Delphi Version 2009 musste man folgendes ändern.
String = AnsiString
PChar = PAnsiChar
Char = AnsiChar
Das habe ich gemacht und der Client lief.
bei dem Server habe ich nun folgendes Problem:

Inkompatible Typen AnsiChar und Char. wen ich hier wieder PCar Anstatt PAnsiChar Mache geht das. mit den Compilieren weiter
Delphi-Quellcode:
if StrArr[0] = 'MSGBOXthen begin
   MessageBox(0,PAnsiChar(StrArr[1]),'Winsock Example',MB_OK + MB_ICONINFORMATION)
  end;
end;
Inkompatible Typen Array und PWideChar wen ich hier aus AnsiChar Ein PWideChar Mache geht es. weiter mit dem Compilieren.
Delphi-Quellcode:
function TServer.UserName(): AnsiString;
var
  User : array[0..255] of AnsiChar;
  SizeOfUser : Cardinal;
begin
  SizeOfUser := SizeOf(User);
  if GetUserName(User, SizeOfUser) = True then
    Result := AnsiString(User)
  else
  Result := 'Unknown';
end;
Das selbe gilt für hier:
Delphi-Quellcode:
function TServer.CompName(): AnsiString;
var
  Comp : array[0..255] of AnsiChar;
  SizeOfComp : Cardinal;
begin
  SizeOfComp := SizeOf(Comp);
  if GetComputerName(Comp, SizeOfComp) = True then
    Result := AnsiString(Comp)
  else
  Result := 'Unknown';
end;
Gut nun funktioniert es und der Server startet und man kann sich au verbinden.
Wen ich nun Aber eine Message vom Client schicke auf den Server (MSGBOX).
Kommen nur Fragezeichen an wen ich es mir mit dem Debugger anschaue nämlich hier an dieser Stelle:
Delphi-Quellcode:
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);

  if Length(Data) > 0 then begin

  //Setup our dynamic array structure
  StrArr := Explode('|', Data);

  //Display incoming message (if strArr[0] = 'MSGBOX')
  if StrArr[0] = 'MSGBOXthen begin
   MessageBox(0,PChar(StrArr[1]),'Winsock Example',MB_OK + MB_ICONINFORMATION)
  end;

end;
end;
Mache ich prinzipiell etwas falsch.
Naja die Message kommt aber Weiterunten im Code richtig an habe ich gesehen mit dem Debugger.
meine frage Jetzt kann mir jemand helfen den Fehler zu finden?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#5

AW: Winsock Example Frage

  Alt 11. Aug 2010, 10:00
Was denn jetzt? Zeigt nur die MessageBox Quatsch an, oder ist der auch im Debugger zu sehen?

[edit] Falls Ersteres, versuch es mal so (nur dahingetippt, mein Delphi kann kein Unicode):
Delphi-Quellcode:
if StrArr[0] = 'MSGBOXthen begin
   MessageBoxA(0,PAnsiChar(StrArr[1]),'Winsock Example',MB_OK or MB_ICONINFORMATION);
[/edit]

[edit2] Müsste das nicht eigentlich StrArr[0] sein? [/edit2]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (11. Aug 2010 um 10:08 Uhr)
  Mit Zitat antworten Zitat
CoYoTE

Registriert seit: 11. Aug 2010
8 Beiträge
 
#6

AW: Winsock Example Frage

  Alt 11. Aug 2010, 10:44
Die Messagebox zeigt Garnichts an nur im Debugger ist zusehen das die Nachricht als Fragezeichen ankommt nun
weiter unten im quelltext wird aufgeteilt in StrArr[0] und StrArr[1]
den die Message kommt vom Klienten so an.
MSGBOX|nachricht,

MSGBOX wird da in StrArr[0] Gespeichert und die Nachricht in StrArr[1]

Deshalb ist auch eine if abfrage den wen StrArr[0] MSGBOX ist dann wird die Message StrArr[1] Angezeigt nur da kommen wiegesagt Aber nur Fragezeichen an.
Der Client funktioniert aber richtig.
Der schickt die richtige Message die kommt ja au an wird aber in dem Server zu Fragezeichen.
An der besagten stelle.

Ohje hoffe ihr könnt mir helfen,
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#7

AW: Winsock Example Frage

  Alt 11. Aug 2010, 10:50
An welcher Stelle denn genau? Sieht "Data" noch plausibel aus, oder steht da bereits Müll drin?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
CoYoTE

Registriert seit: 11. Aug 2010
8 Beiträge
 
#8

AW: Winsock Example Frage

  Alt 11. Aug 2010, 10:53
Die Messagebox zeigt Garnichts an nur im Debugger ist zusehen das die Nachricht als Fragezeichen ankommt nun
weiter unten im quelltext wird aufgeteilt in StrArr[0] und StrArr[1]
den die Message kommt vom Klienten so an.
MSGBOX|nachricht,

MSGBOX wird da in StrArr[0] Gespeichert und die Nachricht in StrArr[1]

Deshalb ist auch eine if abfrage den wen StrArr[0] MSGBOX ist dann wird die Message StrArr[1] Angezeigt nur da kommen wiegesagt Aber nur Fragezeichen an.
Der Client funktioniert aber richtig.
Der schickt die richtige Message die kommt ja au an wird aber in dem Server zu Fragezeichen.
An der besagten stelle.

Ohje hoffe ihr könnt mir helfen,
An dieser Stelle kommt die Message richtig an und dann weis ich nicht weiter was falsch ist:

Delphi-Quellcode:
while ((iRecv > 0) and (iRecv <> INVALID_SOCKET)) do
      begin
        ReceiveData(hSocket, @Buffer);
        ZeroMemory(@Buffer, SizeOf(Buffer));
        iRecv := Recv(hSocket, Buffer, SizeOf(Buffer), 0);
      end;
  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 07:17 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