Entwickler-Ecke

Internet / Netzwerk - verbindung von 2 programmen an 2 pcs?


liquid air - Sa 16.12.06 20:35
Titel: verbindung von 2 programmen an 2 pcs?
Hi...ich hätte eine Frage, und ich glaube dass ich damit vielen Leuten auf die nerven gehen werde, weil sie sicher schon 1000 Mal gestellt wurde, und man das warscheinlich auch nicht so schnell beantworten kann, und ausserdem soll das bestimmt schon jeder Programmierer können...aber ich versuchs trotzdem mal...

Also, meine Idee: Ich als absoluter anfäger habe vor kurzem eine Art Pong programmiert, und nun wollte ich versuchen dieses Programm von mir aus mit meinem Vater an dessen Rechner zu spielen, oder von mir aus auch über Internet mit jmd anderem...Da ich aber, wie gesagt, ein absoluter Delphi Anfänger bin und von Netzwerken u.Ä. ÜBERHAUPT keine Ahnung habe (hab n HeimNetzwerk bei uns erstellt mit Windoof das wars auch schon), wollte ich mal fragen wie und ob ich das so auf die Schnelle machen kann oder ob mir das mit mienem geringen Vorwissen möglich ist...Ich bin dankbar für alle die mir helfen wollen und wie gesgat, tut mir leid aber ich hab gar keine Ahnung und weiss nich wirklich was vor mir liegt ^^


GTA-Place - Sa 16.12.06 20:43

Kannst dir ja mal mein Tutorial angucken, vielleicht hilft es dir:
http://www.delphi-library.de/topic_DXPlay++Die+Kompo+fuers+Web_49517,0.html

Ansonsten wird der kluge Narses dir noch sein Tutorial empfehlen - um das letzte Wort zu haben.


Narses - Sa 16.12.06 20:47

Moin!

Ich hätte auch noch ein Tutorial [http://www.delphi-library.de/topic_TerminatorzeichenProtokollTutorial++1+Sockets+v400_54269.html] anzubieten. ;)

user profile iconGTA-Place hat folgendes geschrieben:
Ansonsten wird der kluge Narses dir noch sein Tutorial empfehlen - um das letzte Wort zu haben.

Der kluge GTA-Place hat offensichtlich übersehen, dass das zwangsläufig passieren muss, wenn ich meinen Beitrag 4 Minuten nach deinem schreibe... :P Ich kann aber die Mods gerne mal Fragen, ob das umsortiert werden kann, wenn es dich sehr belastet. :lol:

cu
Narses


liquid air - Sa 16.12.06 21:08

oh...also ehrlich gesagt versteh ich nich wirklcih was da vor sich geht...^^'

@GTA also deins könnte ich vllt mit viel Mühe grade noch so verstehn, bzw über copy&paste übertragen...aber das ganze dann in mein spiel einzubriengen statt in ein chat-programm werd ich glaub nicht schaffen :(

und @narses also du schreibst ja selbst in dem tutorial dass es für anfänger nicht zu empfehlen ist :oops: ich komm eigentlich auch nich wirklcih damit klar...und btw irgendwie kommen bei den beispiel-projekten die angehängt sind immer fehlermeldungen wenn ich sie öffnen will ^^'
naja...aber eine gute nachricht hab ich für dich: deine signatur find ich recht witzig xDD

Naaaaja...also ich weiss nciht, da ich mir nicht vorstellen kann das mir das jemand explizit erklären will belassen wirs vllt dabei und ich warte mal bis unser lehrer das im info-unterricht mal anspricht...auch das bei dem eher noch ein paar jahrhunderte dauern könnte >_>

trotzdem danke an euch..


Fighter#1 - Sa 16.12.06 21:13

Moment, es gibt noch was für dich ...
Da hab ichs gelernt. Ist sehr empfehlenswert!
http://www.dsdt.info/tutorials/winsocket/
Da steht alles drin, wenn dus dann noch nicht verstehst schreib ich dir mal was ...
Aber gib dir bitte mühe.


Narses - Sa 16.12.06 21:17

Moin!

user profile iconliquid air hat folgendes geschrieben:
und @narses also du schreibst ja selbst in dem tutorial dass es für anfänger nicht zu empfehlen ist :oops: ich komm eigentlich auch nich wirklcih damit klar...und

Es gibt ja auch noch eine etwas "leichtere" Version für Anfänger [http://www.delphi-library.de/topic_Minimaler+LANInternetChat+mit+TServerTClientSocket_60744.html]. ;)

user profile iconliquid air hat folgendes geschrieben:
btw irgendwie kommen bei den beispiel-projekten die angehängt sind immer fehlermeldungen wenn ich sie öffnen will

Welche Delphi-Version hast du denn? Du brauchst für meine Tuts die Delphi-Socket-Komponenten (TClientSocket und TServerSocket). Entsprechende Anleitungen zum Nachinstallieren findest du auch in der Library bzw. in der Linkliste in meinem Tut-Beitrag.

cu
Narses


liquid air - So 17.12.06 00:28

ich hab delphi 6.0 ...

ok, hab mir mal das tut von fighter angesehne...hab jetz auch mal versucht dieses beispielprogramm nachzubauen aber irgdnewie passiert hier net so wirklich was:


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:
79:
80:
81:
82:
83:
84:
85:
86:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button2Click(Sender: TObject);

    
  private
    { Private-Deklarationen }
  public
    Server: TServerSocket;
    Client: TClientSocket;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Server := TServerSocket.Create(Form1);
  Client := TClientSocket.Create(Form1);
  try
    Server.Port := 10024;
    Server.Open;
    Client.Port := 10024;
    Client.Host := '127.0.0.1';
    Client.Open;
  except
    Client.Free;
    Server.Free;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Client.Free;
  Server.Free;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Client.Socket.SendText('Hallo!');
end;


//wie ich die folgende prozedure einbinden soll ist mir leider nicht ganz klar:
procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  MSG: String;
begin
  MSG := Socket.ReceiveText;

  Memo1.Lines.Add(MSG);
end;


//spätestens wenn ich das hier mache müsste er mir doch was ausgeben, oder??
procedure TForm1.Button2Click(Sender: TObject);
var s: string;
begin
  s:=client.Socket.ReceiveText;
  memo1.Lines.add(s);
end;

end.


joa...weiss ehrlich gesgat nicht so wirklich woran es liegt ^^' also nach kurzer zeit verschwindet das "Memo1" vom memo-feld, und es ist dann ganz leer...falls das eine hilfe sein könnte...


Narses - So 17.12.06 01:15

Moin!

user profile iconliquid air hat folgendes geschrieben:
ich hab delphi 6.0 ...

OK, dann sollten die Socket-Komponenten bei dir ja verfügbar sein. Welche Fehlermeldung kommt denn genau, wenn du versuchst, meine Demo-Projekte zu öffnen? :gruebel: In meiner D6PE lassen diese sich problemlos öffnen... :nixweiss:

Wenn du noch Interesse haben solltest, es mit meinen Tuts zu versuchen, bin ich gerne bereit, dir dabei zu helfen. ;)

cu
Narses


Fighter#1 - So 17.12.06 11:07

Die Socket Komponenten (zum Aufs Formular ziehen) sind im Reiter Internet .
Die Fehlt im OnCreate ereigniss die deklaration die Procedure ServerOnClientRead;

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Server := TServerSocket.Create(Form1);
  Client := TClientSocket.Create(Form1);
  try
    Server.OnClientRead:=Form1.ServerClientRead;
    Server.Port := 10024;
    Server.Open;
    Client.Port := 10024;
    Client.Host := '127.0.0.1';
    Client.Open;
  except
    Client.Free;
    Server.Free;
  end;
end;


Wenns dann nicht funktioniert ... kp, ich probiers nachher auch mal.

Aber wie Narses schon sagte, es ist noch einfacher wenn du aus dem Reiter die Komponente aufs Formular ziehst und dann eben damit rumwurschtelst.

MFG Fighter#1