Entwickler-Ecke
Internet / Netzwerk - Netzwerk chat mit indy
The-FoX - Mo 25.08.03 19:48
Titel: Netzwerk chat mit indy
Kann mir jmd. erklären wie ich einen Netzwerk-Chat mit indy realisieren kann? Ich habe mir das Tut von Superchatti durchgelesen, aber was soll ich als Host nehmen? Und welchen Port? Kann jmd mal einpaar Beispiel Einstellungen posten? Thx.
Ex0rzist - Di 26.08.03 14:08
Host: IP des Servers (z.B. localhost)
Port: such dir einen aus, der dir gefällt (z.B. 1700)
Akut-Programming - Di 26.08.03 15:46
Wenn du die Demo unter Delphi nicht hast, hab ich hier den Source für n kleines Chatprog, welches ich in meinen Delphi Demos gefunden hab. Viel Spass!!!
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: 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:
| unit main;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Buttons, ScktComp, ExtCtrls, ComCtrls;
type TChatForm = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; FileConnectItem: TMenuItem; FileListenItem: TMenuItem; StatusBar1: TStatusBar; Bevel1: TBevel; Panel1: TPanel; Memo1: TMemo; Memo2: TMemo; N1: TMenuItem; SpeedButton1: TSpeedButton; Disconnect1: TMenuItem; ServerSocket: TServerSocket; ClientSocket: TClientSocket; procedure FileListenItemClick(Sender: TObject); procedure FileConnectItemClick(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure ServerSocketError(Sender: TObject; Number: Smallint; var Description: string; Scode: Integer; const Source, HelpFile: string; HelpContext: Integer; var CancelDisplay: Wordbool); procedure Disconnect1Click(Sender: TObject); procedure ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ServerSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); protected IsServer: Boolean; end;
var ChatForm: TChatForm; Server: String;
implementation
{$R *.DFM}
procedure TChatForm.FileListenItemClick(Sender: TObject); begin FileListenItem.Checked := not FileListenItem.Checked; if FileListenItem.Checked then begin ClientSocket.Active := False; ServerSocket.Active := True; Statusbar1.Panels[0].Text := 'Listening...'; end else begin if ServerSocket.Active then ServerSocket.Active := False; Statusbar1.Panels[0].Text := ''; end; end;
procedure TChatForm.FileConnectItemClick(Sender: TObject); begin if ClientSocket.Active then ClientSocket.Active := False; if InputQuery('Computer to connect to', 'Address Name:', Server) then if Length(Server) > 0 then with ClientSocket do begin Host := Server; Active := True; FileListenItem.Checked := False; end; end;
procedure TChatForm.Exit1Click(Sender: TObject); begin ServerSocket.Close; ClientSocket.Close; Close; end;
procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_Return then if IsServer then ServerSocket.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count - 1]) else ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]); end;
procedure TChatForm.FormCreate(Sender: TObject); begin FileListenItemClick(nil); end;
procedure TChatForm.ServerSocketError(Sender: TObject; Number: Smallint; var Description: string; Scode: Integer; const Source, HelpFile: string; HelpContext: Integer; var CancelDisplay: Wordbool); begin ShowMessage(Description); end;
procedure TChatForm.Disconnect1Click(Sender: TObject); begin ClientSocket.Active := False; ServerSocket.Active := True; Statusbar1.Panels[0].Text := 'Listening...'; end;
procedure TChatForm.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); begin Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost; end;
procedure TChatForm.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); begin Memo2.Lines.Add(Socket.ReceiveText); end;
procedure TChatForm.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); begin Memo2.Lines.Add(Socket.ReceiveText); end;
procedure TChatForm.ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket); begin IsServer := True; Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress; end;
procedure TChatForm.ServerSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Memo2.Lines.Clear; end;
procedure TChatForm.ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin FileListenItemClick(nil); end;
procedure TChatForm.ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Memo2.Lines.Add('Error connecting to : ' + Server); ErrorCode := 0; end;
procedure TChatForm.ServerSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin Statusbar1.Panels[0].Text := 'Listening...'; end;
end. |
The-FoX - Mi 27.08.03 02:51
@akut-Programming: Nein ich hatte dieses Demo nicht, thx fürs posten!
@ex0rzist: IP Localhost? Das ist doch eine IP?! Also ein Bsp.: Ich bin auf ner Lan Party und habe die IP 10.10.192.2 z.B. mein Freund, mit dem ich chatten möchte, hat die IP 10.10.192.3. Also ich geb dem das Program, in dem meine IP als Host definiert ist, und ich habe das Program auch. Also würd des so gehen?
Ex0rzist - Mi 27.08.03 13:21
Localhost = 127.0.0.1, also der eigene Rechner. Genauso kannst du auch den Computernamen eintragen. Die Adresse wird dann in die entsprechende IP umgewandelt.
Wenn du das Server-Programm hast, muss dein Freund, der das Client-Programm hat, deine IP haben (den Port natürlich auch). Die trägt er dann bei sich in ein Edit und verbindet sich anschliessend mit deinem Server.
Akut-Programming - Mi 27.08.03 13:45
Tip für einfache Namensauflösung ohne DNS Server
Du kannst in der Datei "hosts" im Verzeichnis
C:\Windows/WinNT\system32\drivers\etc für eine IP einen Namen angeben (ähnlich wie bei DNS Server, nur es muss eben manuell gemacht werden), mit dem du dann arbeiten kannst.
Bsp.: Dein Freund hat die IP 192.168.10.1 dann könntest du in die Datei diesen Eintrag setzen. Damit musst du dir die IP nicht merken!
Bsp. für hosts File:
Quelltext
1: 2:
| 127.0.0.1 localhost 192.168.10.1 Achim |
Wenn du jetzt in deinem Browser den Namen "Achim" eingibst, macht er eine Namensauflösung mit Hilfe dieser Datei und verbindet dich auf den Localhost von "Achim"
So jetzt mal zu deinem letzten Posting @Fox:
Wenn du den Chat realisieren willst, reicht es nicht aus, nur auf deinem PC das Prog laufen zuhaben. du brauchst noch "das passende Gegenstück" auf dem PC mit dem du Chatten willt. D.h., wenn du in deinem serverseitigen Prog die Komponente "ServerSocket" verwendest musst du in deiner Client Software die Komponente "ClientSocket" verwenden und an dein Hostprog anpassen.
Ich hoffe es ist verständlich!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!