| Autor |
Beitrag |
darkdester
      
Beiträge: 100
|
Verfasst: Di 11.01.05 21:33
hallo leute
client server is garnet so leicht
vorallen erstmal wissen das man da sin delphi7 xtra freischalten muss... *puh*
so hab dieses tut mal nachgemacht
www.dsdt.info/tipps/?id=598
leider funktionierts nicht
kommt kein text
port sind gleich
ip is 127.0.0.1
theoretisch müsste alles stimmen...
hat einer ne idee worans noch liegen könnte?
mfg darkdester
Moderiert von AXMD: Titel geändert (Grammatikfehler )
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 11.01.05 22:07
Moin!
Zeig mal den Code, dann kann man auch Fehler suchen...
cu
Narses
|
|
darkdester 
      
Beiträge: 100
|
Verfasst: Di 11.01.05 22:19
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 11.01.05 22:33
Moin!
So wird das nix, du hast da die "Reihenfolge" durcheinander gebracht:
Du kannst nicht im Connect-Ereignis des Sockets erst den Port setzen und den Socket aktivieren, dann wird das Eregnis nie eintreten. Beim Server ähnlich.
Guckst du hier, da hab ich mal eine Mini-Anwendung in der Art gemacht.
cu
Narses
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Di 11.01.05 22:34
| darkdester hat folgendes geschrieben: |
ok hier
Server
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); begin ServerSocket1.Port :=23; ServerSocket1.active :=true; end;
... | |
Ich denke, genau da ist der fehler.
Du solltest den Serversocket nicht in OnAccept aktivieren, sondern in Form1.OnCreate oder ähnlichem
Gruß
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
darkdester 
      
Beiträge: 100
|
Verfasst: Mi 12.01.05 15:07
| CenBells hat folgendes geschrieben: | | darkdester hat folgendes geschrieben: |
ok hier
Server
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); begin ServerSocket1.Port :=23; ServerSocket1.active :=true; end;
... | |
Ich denke, genau da ist der fehler.
Du solltest den Serversocket nicht in OnAccept aktivieren, sondern in Form1.OnCreate oder ähnlichem
Gruß
Ken |
oncreate oder so bringt er fehler
mit wert kann nciht verändert werden
hmm onavtivate geht a net war klar
übern button lässt er sich a net aktiviern
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 12.01.05 15:10
Moin!
Haste dir mal meinen Code aus dem Beispiel-Link oben angesehen?
Abgesehen davon ist dein Deutsch nur sehr schwer verständlich...
cu
Narses
|
|
darkdester 
      
Beiträge: 100
|
Verfasst: Mi 12.01.05 16:25
ich schaffs einfach nicht den text zu sende
bsp hab cih angeschaut und was übernommen und geändert geht trotzdem nicht
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 12.01.05 16:26
Moin!
| darkdester hat folgendes geschrieben: | ich schaffs einfach nicht den text zu sende
bsp hab cih angeschaut und was übernommen und geändert geht trotzdem nicht |
Ja, dann her mit dem Code, oder?
cu
Narses
|
|
darkdester 
      
Beiträge: 100
|
Verfasst: Mi 12.01.05 18:30
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 12.01.05 18:59
Moin!
Jau, dann mal an´s Werk:
client
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.FormCreate(Sender: TObject); begin ClientSocket1.Port := 5555; ClientSocket1.Host := '127.0.0.1'; ClientSocket1.active := TRUE; end;
procedure TForm1.Button1Click(Sender: TObject); begin if ClientSocket1.Active then ClientSocket1.Socket.SendText('Hallo Server'); Radiobutton1.checked:=true; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ClientSocket1.Active := FALSE; end; |
1. Du machst das oben in der falschen Reihenfolge, erst die Parameter setzen, dann den Socket öffnen.
2. Beim zweiten Highlight bin ich nicht sicher, ob du falsch eingerückt hast oder begin/end vergessen?
server
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.FormCreate(Sender: TObject); begin ServerSocket1.Port := 5555; ServerSocket1.Active := TRUE; end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add(Socket.RemoteAddress+': '+Socket.ReceiveText); end;
procedure TForm1.loech(Sender: TObject); begin Memo1.Clear; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ServerSocket1.Active := FALSE; end; |
1. Das gleiche Spiel, erst Parameter, dann aktivieren!
2. Wenn du ein Memo löschen willst, geht das auch einfacher.
Damit sollte es laufen. Wenn immer noch nicht, dann machst du irgendwas grundlegendes falsch oder hast einen Fehler im Windows-System.
cu
Narses
|
|
darkdester 
      
Beiträge: 100
|
Verfasst: Mi 12.01.05 19:40
geht nicht...
leigts vlt am 127.0.0.1?
weil bin an nem router
aber theo. müsstes trotzdem gehen
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 12.01.05 19:45
Moin!
Pack dein Projekt mal in ein ZIP und mach des downloadbar, ich schau mal rein.
cu
Narses
|
|
darkdester 
      
Beiträge: 100
|
Verfasst: Mi 12.01.05 20:15
| Narses hat folgendes geschrieben: | Moin!
Pack dein Projekt mal in ein ZIP und mach des downloadbar, ich schau mal rein.
cu
Narses |
alos entweder is ein ganz dummer fehler drin oder mein win is puti
s21.yousendit.com/d....QKTI5J52MDLSX5HVZVNY
einfach link kopieren und downloaden
ps: zip is das letzte, rar is das beste, na ok eigentlcih uha aber das kennen nur die wenigsten 
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 12.01.05 20:44
Moin!
Ich hab kein WinRar. Kein ZIP, keine Hilfe.
cu
Narses
|
|
demo88
      
Beiträge: 160
Ubuntu 6.04, Win XP
Delphi 7
|
Verfasst: Mi 12.01.05 20:56
also ich hab mir das gerdade runtergeladen...und hab keinen fehler gefunden
(ich hab ein jahr lang nur mit tserver und tclientsocket gearbeitet um einen chat zu proggen leider bin ich dann auf delphie 2005 umgestiegen und hab keinen bock die alten kompos zu importieren),
aber das programm klappt bei mir auch nicht.
|
|
darkdester 
      
Beiträge: 100
|
Verfasst: Do 13.01.05 14:34
| Narses hat folgendes geschrieben: | Moin!
Ich hab kein WinRar. Kein ZIP, keine Hilfe.
cu
Narses |
..., pratkisch jeder download is jetzt rar
zip nutzt kaum noch jemand << weils nur mist ist
lad dir winrar und fertig...
naja anschneinend is trotzdem kein fehler drin geht aber trotzdem nicht
sehe einfach keinen text
ps: winrar kann fast alles öffnen auch deine achso geliebten zip files
edit: welche möglichkeiten habe ich den noch server und client zu schreiben?
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 13.01.05 19:19
Moin!
Zunächst mal: womit und wohinein ich Dateien packe und auspacke, ist meine Sache - du willst Hilfe, du hast das Problem, nicht ich.
Was noch Probleme machen könnte, ist eine Firewall; sofern vorhanden, schonmal abgeklemmt? Mal mit einem Portscanner geschaut, ob denn der Port geöffnet wird, wenn der Server läuft?
cu
Narses
|
|
WeBsPaCe
      
Beiträge: 2322
Erhaltene Danke: 1
FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
|
Verfasst: Do 13.01.05 20:17
Ich hab' mal schnell ein Prog geschrieben, das du einfach nur noch so abändern musst, damit es so aussieht wie du's haben willst:
glaessi.piranho.com/delphi/Project1.zip
Und für Narses hab ich dein RAR-Archiv nochmal neu gepackt, als ZIP:
glaessi.piranho.com/delphi/Original.zip
//EDIT: Ich merke gerade, dass piranho wieder Probleme mit seinen Servern hat... Im Moment irgenwie also nur Upload, kein Download möglich...  Vielleicht geht's ja irgenwann wieder...
//EDIT: Es funktioniert, wenn ihr den Link rechts anklickt und "Speichern unter" macht... 
_________________ Steht der Bauer im Gemüse, hat er später grüne Füße.
Zuletzt bearbeitet von WeBsPaCe am Fr 14.01.05 15:57, insgesamt 1-mal bearbeitet
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 13.01.05 20:27
lol hab grad n chattool gebastelt, bei freunden kommts schon gut an hier ma source:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224:
| unit Main;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, ScktComp;
type TForm1 = class(TForm) Memo1: TMemo; Memo2: TMemo; Edit1: TEdit; Button1: TButton; MainMenu1: TMainMenu; Verbindung1: TMenuItem; Verbinden1: TMenuItem; Unterbrechen1: TMenuItem; N1: TMenuItem; Beenden1: TMenuItem; ClientSocket1: TClientSocket; ServerSocket1: TServerSocket; ChatLog1: TMenuItem; DieseSessionaufzeichnen1: TMenuItem; N2: TMenuItem; DiesenPCalsServerbenutzen1: TMenuItem; procedure Memo2KeyPress(Sender: TObject; var Key: Char); procedure ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); procedure Verbinden1Click(Sender: TObject); procedure Beenden1Click(Sender: TObject); procedure Memo1KeyPress(Sender: TObject; var Key: Char); procedure Button1Click(Sender: TObject); procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Unterbrechen1Click(Sender: TObject); procedure DieseSessionaufzeichnen1Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure DiesenPCalsServerbenutzen1Click(Sender: TObject); procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); private public protected isserver:boolean; end;
var Form1: TForm1; Server, Nick: String; recordS: boolean;
implementation
{$R *.dfm}
procedure TForm1.Memo2KeyPress(Sender: TObject; var Key: Char); begin key:= #0; end;
procedure TForm1.ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); begin IsServer := True; memo2.text := 'Verbunden mit: ' + Socket.RemoteAddress; end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin memo1.lines.add(''); Memo1.Lines.Add(Socket.ReceiveText); end;
procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin memo2.text := 'Verbunden mit: ' + Socket.RemoteHost; end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); begin memo2.text := 'Verbindung getrennt!'; end;
procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Memo2.text := 'Fehler beim Verbinden mit: ' + Server; ErrorCode := 0; end;
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin memo1.lines.add(''); Memo1.Lines.Add(Socket.ReceiveText); end;
procedure TForm1.Verbinden1Click(Sender: TObject); begin if ClientSocket1.Active then ClientSocket1.Active := False; if InputQuery('Verbinden', 'Server-Addresse:', Server) then if InputQuery('Benutzer', 'Benutzer-Name:', Nick) then if Length(Server) > 0 then if length(nick) <= 0 then nick := 'Gast'; with ClientSocket1 do begin Host := Server; Active := True; end; end;
procedure TForm1.Beenden1Click(Sender: TObject); begin if recordS = true then memo1.lines.SaveToFile('Chat.txt'); ServerSocket1.Close; ClientSocket1.Close; Close; end;
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); begin key:= #0; end;
procedure TForm1.Button1Click(Sender: TObject); begin if length(nick) <= 0 then nick := 'Gast'; if IsServer then ServerSocket1.Socket.Connections[0].SendText(nick + ': ' + edit1.text) else ClientSocket1.Socket.SendText(nick + ': ' + edit1.text); memo1.lines.add(''); memo1.lines.add(nick + ': ' + edit1.Text); edit1.text:= ''; end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if length(nick) <= 0 then nick := 'Gast'; if Key = VK_Return then begin if IsServer then ServerSocket1.Socket.Connections[0].SendText(nick + ': ' + edit1.text) else ClientSocket1.Socket.SendText(nick + ': ' + edit1.text); memo1.lines.add(''); memo1.lines.add(nick + ': ' + edit1.Text); edit1.text:= ''; end; end;
procedure TForm1.Unterbrechen1Click(Sender: TObject); begin ClientSocket1.Active := False; ServerSocket1.Active := false; memo2.text := 'Verbindung getrennt!'; end;
procedure TForm1.DieseSessionaufzeichnen1Click(Sender: TObject); begin DieseSessionaufzeichnen1.checked:= not DieseSessionaufzeichnen1.checked; if DieseSessionaufzeichnen1.checked = true then recordS:= true else recordS:= false; end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin recordS:= MessageDlg('Möchten Sie die letzte Session speichern?', mtConfirmation, [mbYes,mbNo], 0) = mrYes; if recordS = true then if recordS = true then memo1.lines.SaveToFile('LastChat.txt'); end;
procedure TForm1.DiesenPCalsServerbenutzen1Click(Sender: TObject); begin DiesenPCalsServerbenutzen1.checked:= not DiesenPCalsServerbenutzen1.checked; if DiesenPCalsServerbenutzen1.checked = true then begin if length(nick) <= 0 then if InputQuery('Benutzer', 'Benutzer-Name:', Nick) then if length(nick) <= 0 then nick := 'Gast'; isserver:= true; serversocket1.active:= true; memo2.text := 'Server erfolgreich erstellt!'; end else begin isserver:= false; serversocket1.active:= false; memo2.text := 'Server heruntergefahren!'; end; end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin ServerSocket1.Socket.Connections[0].SendText('Willkommen auf dem Chat42 Server von ' + nick + ' !'); end;
procedure TForm1.FormShow(Sender: TObject); begin edit1.SetFocus; end;
procedure TForm1.FormCreate(Sender: TObject); begin SetBounds((Screen.Width - Width) div 2, (Screen.Height - Height) div 2, Width, Height); end;
end. |
mir war grad langweilig und dann naja was dann halt so kommt ^^
|
|