Autor Beitrag
testra
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mi 27.09.06 16:25 
Moderiert von user profile iconraziel: Abgetrennt von [url=www.delphi-forum.de/...ighlight=]hier[/url]

ok,
du hast es nicht anders gewollt! 8)

ich habe alles in ein formular gepackt, und die port-adressen hard-codiert.
den code habe ich übrigens gefunden, er stand in 2 versch. dateien.

nach dem button-klick kommt der compiler-fehler: Zugriffsverletzung bei
Adresse 4005D 594 in Modul 'rtl70.bpl'

ausblenden volle Höhe Delphi-Quelltext
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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ScktComp;


type
    TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;

    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    ClientSocket: TClientSocket;
    ServerSocket: TServerSocket;
    Socket: TCustomWinSocket;
    Empfangen : String;
    Server: String;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

  ServerSocket.Port:= StrToInt('500');
  ServerSocket.Open;
  Memo1.Lines.Add(ServerSocket.Socket.LocalHost + ' geht auf Empfang.');

  With ClientSocket do begin
    Address:= '500';
    Port:= StrToInt('500');
    Open;
    Memo1.Lines.Add('Suche Verbindung zum Server ' + Address + '...');
  end;

  Empfangen:= 'von ' + Socket.RemoteHost + '/' + Socket.RemoteAddress +
              ' empfangen: ' + Socket.ReceiveText;
  Memo1.Lines.Add(Empfangen);
  Socket.SendText(Empfangen);

  Server:= Socket.RemoteHost + '/' + Socket.RemoteAddress;
  Memo1.Lines.Add('Verbindung mit Server ' + Server);

  Memo1.Lines.Add('Verbindung mit: ' + Socket.RemoteHost + '/' + Socket.RemoteAddress);
  Socket.SendText('verbunden mit Server ' + ServerSocket.Socket.LocalHost);

  Memo1.Lines.Add(Socket.ReceiveText);

  ClientSocket.Socket.SendText('500');

  ClientSocket.Close;

  Memo1.Lines.Add('Verbindung zum Server ' + Server + ' geschlossen.');

  ServerSocket.Close;

  Memo1.Lines.Add('Verbindung von ' + Socket.RemoteHost + '/' +
                    Socket.RemoteAddress + ' beendet.');

  Memo1.Lines.Add('Verbindung vom Server ' + Server + ' beendet.');

  Close;

end;

end.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 27.09.06 16:31 
Moin!

user profile icontestra hat folgendes geschrieben:
du hast es nicht anders gewollt! 8)

Oh, wollte ich das? :gruebel:

user profile icontestra hat folgendes geschrieben:
nach dem button-klick kommt der compiler-fehler: Zugriffsverletzung bei
Adresse 4005D 594 in Modul 'rtl70.bpl'

Ja, schön. Und? :nixweiss:

Sag mal, vielleicht solltest du über deine Umgangsformen nachdenken. :| Weder "Hallo", noch "Danke" oder "Bitte", ich bin doch kein in deinen PC eingebauter Hilfeassistent... :? :(

//EDIT: Dein Code behandelt übrigens TCP-Verbindungen, nicht UDP. Deshalb ist ein neuer Thread draus geworden. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.


Zuletzt bearbeitet von Narses am Mi 27.09.06 22:57, insgesamt 1-mal bearbeitet
testra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mi 27.09.06 16:44 
Hallo :lol:

ich dachte mit den Socket-Komponenten auf das Netzwerk zugreifen wäre egal, mit welchen Protokollen man da arbeitet.

Danke!
:lol:
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 27.09.06 17:27 
Moin!

user profile icontestra hat folgendes geschrieben:
ich dachte mit den Socket-Komponenten auf das Netzwerk zugreifen wäre egal, mit welchen Protokollen man da arbeitet.

Ja, grundsätzlich ist das auch egal. Aber wenn der andere Thread eine UDP-Komponente behandelt, dann macht TCP da irgendwie keinen Sinn, oder? ;)

Und weil du artig warst, gibt´s noch einen Link: für Anfänger :rofl:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.


Zuletzt bearbeitet von Narses am Mi 27.09.06 22:57, insgesamt 1-mal bearbeitet
testra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mi 27.09.06 17:37 
Hallo

also das und vieles mehr habe ich doch schon durchgelesen, bin seit tagen am lesen und werde immer verwirrter. Deshalb wollte ich den code auch nicht soo kompliziert haben, ich will auch keinen client-formular mit server-formular. ich wollte alles in 1 formular basteln, mit einfachsten methoden, und ich wollte im code den server öffnen, den client öffnen, irgendein text versenden ( oder empfangen ). den versendeten text nicht mal im memo-feld ausgeben sondern vielleicht im showmessage, und wieder den server schliessen. das wars dann schon. wenn ich aber den code in 1 formular packe stürzt mir die anwendung ab, vielleicht braucht der server zeit um bereit zu sein? keine ahnung... :bawling: :bawling:

danke :les:
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 27.09.06 23:11 
Moin!

user profile icontestra hat folgendes geschrieben:
ich habe alles in ein formular gepackt, und die port-adressen hard-codiert.
den code habe ich übrigens gefunden, er stand in 2 versch. dateien.

nach dem button-klick kommt der compiler-fehler: Zugriffsverletzung bei
Adresse 4005D 594 in Modul 'rtl70.bpl'

Das ist auch kein Wunder, denn offensichtlich hast du keine Ahnung, was du da zusammenkopiert hast... :shock: Den Code flicken zu wollen macht keinen Sinn, das ist viel zu sehr daneben. :| Sorry, aber leider ist das eben so. :(

user profile icontestra hat folgendes geschrieben:
also das und vieles mehr habe ich doch schon durchgelesen, bin seit tagen am lesen und werde immer verwirrter.

Du solltest in Erwägung ziehen, dass ein Tutorial-Autor sich was dabei gedacht hat, wenn er ein Konzept aufbaut. Deshalb ist es durchaus sinnvoll, wenn du erstmal das, was im Tut behandelt wird, einfach mal nachprogrammierst und so die Grundlagen erlernst (wie es z.B. in meinen Tutorials geplant ist). Danach kannst du das Wissen dann sehr viel besser auf deine konkreten Probleme übertragen.

Leider macht dein "Code-Experiment" aber nur allzu deutlich, dass du noch nicht sehr viel aus den Tutorials, die du so bisher gelesen hast (zumindest aus meinen), gelernt hast. Deshalb lege ich dir nochmal dringend ans Herz, diese gründlich durchzuarbeiten und erst danach wieder an deinem Code zu arbeiten. Neue Konzepte lesen/lernen und gleichzeitig neuen Code entwickeln ist vielleicht etwas viel auf einmal... :D

user profile icontestra hat folgendes geschrieben:
Deshalb wollte ich den code auch nicht soo kompliziert haben, ich will auch keinen client-formular mit server-formular. ich wollte alles in 1 formular basteln, mit einfachsten methoden,

Leider ist der Kombi-Ansatz (Server und Client in einer Anwendung) der deutlich Schwerere, und nicht leichter! ;) Und es ist nebenbei gesagt selten sinnvoll, sowas überhaupt zu probieren. ;)

user profile icontestra hat folgendes geschrieben:
und ich wollte im code den server öffnen, den client öffnen, irgendein text versenden ( oder empfangen ). den versendeten text nicht mal im memo-feld ausgeben sondern vielleicht im showmessage, und wieder den server schliessen.

Es ist deutlich einfacher den Text in ein Memo zu schreiben, als eine Benutzerinteraktion ala ShowMessage() zu erzwingen. Das gibt bei der Netzwerkdatenübertragung nämlich sehr "interessante Effekte", wenn man nicht genau weiß, was man da tut. ;)

user profile icontestra hat folgendes geschrieben:
wenn ich aber den code in 1 formular packe stürzt mir die anwendung ab, vielleicht braucht der server zeit um bereit zu sein? keine ahnung...

Unter Anderem genau das, du machst ja praktisch kein Ereignishandling! :hair: Hast du denn schonmal das Chat-Beispiel erfolgreich nachgebaut? Wenn nicht, dann würde ich dir nochmal dringend genau dazu raten (ja, ich weiß, du willst keinen Chat programmieren, sondern was anderes; wenn du aber den Chat verstanden hast, dann kannst du auch andere Sachen schaffen; deine Problemstellung ist doch praktisch ein Chat zwischen zwei Anwendungen, statt Menschen ;)).

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
testra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Do 28.09.06 13:32 
Hallöle

ja du hast ja im allgemeinen Recht, du redest ja hier auch mit einem delphi-anfänger. :eyes:

die frage ist, ob wir in diesem thread weiterreden sollten oder ob ich die diskussion wo anders führen sollte.

Mittlerweile habe ich brav weitergelesen :les: und einen chat gebastelt,
und es funktioniert sogar alles auf einem formular.

ich sehe jetzt das vieles auf Ereignisse beruht und ich frage mich, wie ich wohl das ohne irgendwelche buttons machen kann...

:eyecrazy:
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 28.09.06 13:43 
Moin!

user profile icontestra hat folgendes geschrieben:
die frage ist, ob wir in diesem thread weiterreden sollten oder ob ich die diskussion wo anders führen sollte.

:nixweiss: Warum? Passt dir was nicht an diesem Thread... :gruebel: :?

user profile icontestra hat folgendes geschrieben:
Mittlerweile habe ich brav weitergelesen :les: und einen chat gebastelt,
und es funktioniert sogar alles auf einem formular.

Na fein. ;)

user profile icontestra hat folgendes geschrieben:
ich sehe jetzt das vieles auf Ereignisse beruht und ich frage mich, wie ich wohl das ohne irgendwelche buttons machen kann...

Einen Ansatz habe ich doch schon genannt: du leitest die Kommunikation im FormCreate ein, darauf wird der Server entweder antworten, dann gibt´s ein OnReceive, oder es gibt einen Fehler -> OnError (hier ist dann Schluss, weil irgendwas stimmt mit der Kommunikation nicht; z.B. offline). Im OnReceive wertest du die Serverantwort aus und sendest entweder wieder was, dann gibt´s auch wieder ein OnReceive, oder eben nicht, dann bist du fertig. Braucht keinen Button. ;)

Das ganze auf ein Formular, dass du versteckst, und gut is. :D

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.


Zuletzt bearbeitet von Narses am Do 28.09.06 13:46, insgesamt 1-mal bearbeitet
testra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Do 28.09.06 13:45 
Zitat:
Warum? Passt dir was nicht an diesem Thread...


doch doch, nur weil ich dachte das dieses Thema nicht hierher passen würde..

aber ja gut...

ich werde es dann mal fleissig weiter ausprobieren und melde mich dann wieder

Bis dann...
testra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Fr 29.09.06 09:46 
Moin moin,

beim ausprobieren habe ich mich wieder einmal festgefahren.

die lokale ip adr. meines rechners gibt die socket komponente als 127.0.0.1 an, der name des rechners (was viel interessanter ist) wird auch korrekt angegeben.

ich habe aber nicht rausgefunden, wie ich den namen des servers (z.b. Firmenserver) ausgeben kann........ :?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 29.09.06 10:39 
Moin!

user profile icontestra hat folgendes geschrieben:
ich habe aber nicht rausgefunden, wie ich den namen des servers (z.b. Firmenserver) ausgeben kann........ :?

Neue Frage -> neuer Thread! ;) :mahn: Das kennst du doch jetzt schon. :D

Und bei der Gelegenheit bitte gleich noch etwas mehr des Problems beschreiben. Was suchst du, eine Funktion, die den Hostnamen liefert, oder was? :gruebel:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
testra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Fr 29.09.06 10:51 
Hi

Zitat:
Neue Frage -> neuer Thread! Das kennst du doch jetzt schon.


aber diese frage gehört doch zum chat-programm. :wink:

mit Socket.RemoteHost oder Socket.LocalAdress wird mir vom Client localhost bzw. 127.0.0.1 ausgegeben ( bei ServerSocket - Events).

Bei ClientSocket - Events das gleiche.

Der Name des Rechners, der beim Server angemeldet ist wird auch ausgegeben,
was ich suche ist aber der Name der Servers selbst.

Danke
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 29.09.06 11:11 
Moin!

user profile icontestra hat folgendes geschrieben:
Zitat:
Neue Frage -> neuer Thread! Das kennst du doch jetzt schon.

aber diese frage gehört doch zum chat-programm. :wink:

Threads sind hier nicht Programmbezogen, sondern auf den Titel, und der ist hier: "Zugriffsverletzung bei Sockets". ;)

Du willst aber was ganz anderes wissen, was damit nix zu tun hat, so dass jemand, der das gleiche Problem hat, niemals darauf kommen wird, hier reinzusehen. Fazit: das gibt Chaos - und deshalb:

Neue Frage -> Neuer Thread. :mahn: ;) (ist nicht meine Regel, find ich aber trotzdem gut! ;))

(Ich sag ja was dazu, aber in einem neuen Thread. :roll:) ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
testra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Fr 29.09.06 11:53 
hi

deshalb hatte ich ja letztens gemeint, ob wir in diesem thread weiterdiskutieren sollten. aber na gut, ich tue das mal in ein neues rein.

Bis dann.. :roll: