![]() |
chat funktioniert nicht übers inet =(
Hallo Leute,
ich habe es doch noch geschafft mir einen kleine chat zu schreiben .. ich würd aber damit auch gerne übers inet chatten können mit anderen leuten die das prog benutzen. Wenn ich den Server geöffnet habe und nochmal die exe öffne und auf client gehe und die ip (vom inet die ich auf ![]() Hier einmal der code:
Delphi-Quellcode:
Vielen Dank schonmal im vorraus
procedure TForm1.Button1Click(Sender: TObject);
begin // Server form1.Caption := 'Server'; ServerSocket1.Open; end; procedure TForm1.Button2Click(Sender: TObject); begin // client form1.Caption := 'Client'; ClientSocket1.Host := edit2.Text; ClientSocket1.open; end; procedure TForm1.Button3Click(Sender: TObject); begin if form1.caption='Server' then begin Memo1.lines.add(edit1.text); serversocket1.Socket.Connections[0].SendText(edit1.text); edit1.text := ''; end; if form1.caption='Client' then begin Memo1.lines.add(edit1.text); clientsocket1.Socket.SendText(edit1.text); edit1.text := ''; end; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin memo1.Lines.Add('Client:' + socket.receivetext); end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin memo1.Lines.Add('Server:' + socket.receivetext); end; end. mfg alanblack |
Re: chat funktioniert nicht übers inet =(
solltest evtl. mal nicht deine Internet IP nehmen sondern deine normale lokale IP
|
Re: chat funktioniert nicht übers inet =(
Zitat:
Sitzt du eventuell hinter einem router ? |
Re: chat funktioniert nicht übers inet =(
sicher bringt einem die lokale ip was..bei meinem funktioniert es auch..allerdings nur dann wenn man nicht hinter einem router sitzt..das ist das problem
|
Re: chat funktioniert nicht übers inet =(
:shock:
Wenn er die lokale IP-Adresse nimmt, dann kann er nicht herausfinden, ob der Chat übers Internet geht oder nicht... :wink: |
Re: chat funktioniert nicht übers inet =(
Hi leute,
also ich habe ISDN - hab also keinen router. Die Firewall hab ich auch ausgeschalten und habs probiert funzte allerdings auch nicht =( weiß jemand sonst noch was? |
Re: chat funktioniert nicht übers inet =(
@KingofWerlte
Was meinst du wieviele (millionen) die gleiche lokale Ip haben ? Für eine Verbindung brauhst du eine eindeutige IP -> Die IP die du von Provider bekommst. Schon mal
Delphi-Quellcode:
probiert ?
ClientSocket1.Active := true;
serversocket1.Active := true; Andernfalls wechsel mal deine Port's |
Re: chat funktioniert nicht übers inet =(
Also als KingOfWerlte und ich den Chat von Ulti mal ausprobieren wollten (der basiert auch auf den Sockets), da ging es auch nicht, obwohl wie die Firewalls aushatten! Vielleicht kannst du dich ja mit den Indy's aufreunden, damit geht es ganz bestimmt! :wink:
|
Re: chat funktioniert nicht übers inet =(
:roll: hmm ich will ja nichts sagen aber wenn mehrere leute die gleiche Lokale IP haben und so ins Internet gehen gibts ein paar probleme
Zitat:
|
Re: chat funktioniert nicht übers inet =(
Zitat:
Mit wem hast du'n dein Chat getestet ? Ich hab den Code ebenfalls mal mit nem Freund getestet, keine Probleme. |
Re: chat funktioniert nicht übers inet =(
[OT]
Zu den IP-Adressen: Die Adresse 192.168.0.1 wird auf der Welt sicherlich ein paar mal vorkommen. Das ist aber deswegen, da die IP-Adresse eine der frei verfügbaren IP-Adressen ist. Bekommst du vom Provider eine IP, so ist diese ganz sicher eindeutig. [/OT] Zu der Socket/Indy-Diskussion: Es ist sehr wohl möglich, mit den Sockets einen internetfähigen Chat zu machen. Ich habe schon mehrere Programme geschrieben, die auf diese Weise funktionierten. Ein Problem gibts nur, wenn der Server hinter einem Proxy/Router liegt. Dann ist ein Verbinden zum Server praktisch unmöglich. Bei deinem Problem müsstest du versuchen, andere Ports zu verwenden. Generell gilt, dass du Ports ab 1024 verwenden kannst. Vom Code her dürfte es allerdings kein Problem sein. Greetz alcaeus |
Re: chat funktioniert nicht übers inet =(
hi,
wie oben schon genannt habe ich keienn Router.. Ich hab das jetzt mal ausprobiert und es mit den Port 1024 probiert, allerdings funktionierte das auch nicht. Könntest du vielleicht deinen code von deinem chat posten? Wäre sehr nett. mfg alanblack |
Re: chat funktioniert nicht übers inet =(
Ich würde dir ja gerne etwas Source geben, allerdings ist dieser seit dem letzten Festplattencrash unauffindbar :stupid:
Ich habe jedoch eine Version des Chats veröffentlicht. Probier mal mit disem Chat was zu machen, wenn der auch nicht funktioniert dann ists nicht die Software sondern was anderes. ![]() Greetz alcaeus |
Re: chat funktioniert nicht übers inet =(
Hi,
wollts mir runterladen irgentwie gehen die links nich ausser die txt datei fehler: Zitat:
|
Re: chat funktioniert nicht übers inet =(
:roll: :wall: Habs schon wieder vergessen zu sagen: Rechtsklick->Ziel speichern unter
Gretisserver fungieren nämlich nicht gern als Datenspeicher... Greetz alcaeus |
Re: chat funktioniert nicht übers inet =(
Hm,
also ich starte den server. (port 23 wie vorgeschlagen und habs auch mit 1024 probiert) dann öffne ich den clienten und tippe meine inet ip ein. gebe den port ein und meinen nicknamen auch. klicke auf ok nach ner weile sagt der: Zitat:
mfg alan |
Re: chat funktioniert nicht übers inet =(
Es könnte daran liegen, weil du beide Programme auf dem selben PC benutzen möchtest, gibd doch den Clienten, oder den Server mal nem Kumpel von dir und probier es nochmal.
|
Re: chat funktioniert nicht übers inet =(
Bei meinem Chat kann das nicht der Grund sein. Ich habe ihn so konzipiert, dass der Server auch auf einem PC laufen kann, der zur gleichen Zeit als Chat-Client genutzt wird. Hier scheint es für mich eher ein Problem mit der IP oder einem Router oder Firewall zu geben. Es ist mir jedoch unerklärlich, nachdem alanblack ja keinen Router oder Firewall hat.
Greetz alcaeus PS: Probier mal, die Verbindung zum Server über localhost oder 127.0.0.1 aufzunehmen |
Re: chat funktioniert nicht übers inet =(
Zitat:
|
Re: chat funktioniert nicht übers inet =(
Hohl dir deine IP lieber mal so:
Delphi-Quellcode:
uses ..., WinSock;
... function getIPs: TStrings; type TaPInAddr = array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe: PHostEnt; pptr: PaPInAddr; Buffer: array[0..63] of Char; I: Integer; GInitData: TWSAData; begin WSAStartup($101, GInitData); Result := TstringList.Create; Result.Clear; GetHostName(Buffer, SizeOf(Buffer)); phe := GetHostByName(buffer); if phe = nil then Exit; pPtr := PaPInAddr(phe^.h_addr_list); I := 0; while pPtr^[I] <> nil do begin Result.Add(inet_ntoa(pptr^[I]^)); Inc(I); end; WSACleanup; end; procedure TForm1.FormCreate(Sender: TObject); begin ComboBox1.Items := getIPs; end; |
Re: chat funktioniert nicht übers inet =(
Und wie ist es, wenn man hinter nem Router sitzt und nen Server aufmachen will?
Gibts da keine Möglichkeit? |
Re: chat funktioniert nicht übers inet =(
Hi,
über die localhost Ip 127.0.0.1 funktionierts. Andere Ip Anzeige Seiten zeigen mir die gleiche IP an wie die von meine-ip.de.vu Hm woran kann das jezt liegen? Viele Grüße alanblack |
Re: chat funktioniert nicht übers inet =(
Zitat:
Greetz alcaeus |
Re: chat funktioniert nicht übers inet =(
Und wie ist es, wenn man hinter nem Router sitzt und nen Server aufmachen will?
Gibts da keine Möglichkeit? Jop die gibt es, sowas nennt man IP-Forwarding oder Virtual Server dabei teilt man den Router mit, welchen Rechner er ansprechen soll wenn ein Verbindungsversuch zu einem bestimmten Port festgestellt wird. Reine Einstellungsache. :gruebel: Ob das immer notwendig is sei dahingestellt, bei meinem Server Chatproggi (funzt auch über internet :mrgreen: )brauch ichs nicht machen. Aber bei meinem Bruder zb. (hat einen anderen Router) muss er es explezit genehmigen. kleiner Nachtrag: falls du es versuchst, dich selber über deine Provider IP zu connecten wird das misslingen, jedenfals war das bei mir so, egal was ich eingestellt habe. Local funzte es aber prächtig. Um zu probieren ob es daran liegt, gib das proggi n Kumpel und probiert es dann übers Netz. |
Re: chat funktioniert nicht übers inet =(
Also welche IP hernehmen? die Lokale oder die, die auf
![]() |
Re: chat funktioniert nicht übers inet =(
Nicht die lokale, deine Internet-IP.
|
Re: chat funktioniert nicht übers inet =(
Ich hab des jetzt mit nem einfachen Prog ausprobiert und im lokalen Netztwerk klappt es.
Jetzt hab ich das Prog einem Freund gegeben, der hinter einem Router sitzt, genau wie ich. Der Server läuft bei mir, er hat einen Client. Ich hab den Server gestartet und ihm die ip von ![]() Es hat jedoch nicht geklappt, danach hab ich ihm die ip gegeben, die bei ipconfig unter IP-ADRESSE steht, damit gings auch nicht. Im lokalen Netz ging es mit der IP von ![]() schon. Im Router hab ich den benutzten Port geforwarded, was mach ich falsch? |
Re: chat funktioniert nicht übers inet =(
hmmm welchen port benutzt du??
|
Re: chat funktioniert nicht übers inet =(
Port 5600
|
Re: chat funktioniert nicht übers inet =(
Geht leider immer noch nicht...
|
Re: chat funktioniert nicht übers inet =(
Zitat:
|
Re: chat funktioniert nicht übers inet =(
Hinter dem Router sind aber mehrere PC's. Da ist meiner ja nicht genau bestimmt :(
|
Re: chat funktioniert nicht übers inet =(
Was ich meinte ist: ich schätze mal das ist ein Hardware-Router der über ne WWW-Seite oder sowas konfiguriert wird. Gibt es da nicht irgendwo die Info welche öffentliche IP er gerade bekommen hat?
|
Re: chat funktioniert nicht übers inet =(
Ich denke, für jeden Client, der sich einloggen will, muss eine neue Winsock-Instanz gebildet werden, also so eine Art Array. Ich habe dazu in einem anderen Forum mal den Code gefunden. Leider kann ich heute die Quelle nicht mehr angeben.
procedure ... var i:integer; sRec : string; begin for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do begin with ServerSocket1.Socket.Connections[i] do begin sRec := ReceiveText; if sRec <> '' then begin Memo1.Lines.Add(RemoteAddress + ' sends :') ; Memo1.Lines.Add(sRecr); end; end; end; end; |
Re: chat funktioniert nicht übers inet =(
Hallo,
ich verwende die Indys. Ich schau mir das Routermenü nochmal genauer an. |
Re: chat funktioniert nicht übers inet =(
Mal ein anderer Vorschlag: Die TDXPlay-Komponente aus der DelphiX-Sammlung!
Ich bin auch an normalen TCP-Komponenten gescheitert und greife nun zur DXPlay-Kompo. Vorteile: -Keine Client-/Server-Architektur (kann ggf. auch als Nachteil angesehen werden) -Auf eingehende Daten kann in einem Event reagiert werden. -Ganz einfache Handhabung Nur so als Tipp ;) Aenogym |
Re: chat funktioniert nicht übers inet =(
Leute, ihr seit OT - habt ihr den Thread mal gelesen worum es hier eigentlich geht :gruebel:
|
Re: chat funktioniert nicht übers inet =(
Hallo,
@Fiasko: Meinst du mich? Ich hab nochmal im Routermenü nachgeschaut, aber bin nicht weitergekommen. |
Re: chat funktioniert nicht übers inet =(
Ne ich meinte die anderen 2 Postings...
|
Re: chat funktioniert nicht übers inet =(
Der Server muss für jede Anfrage eines Client einen neuen Thread bilden:
![]() "How do we handle more than one client requests at a time? The answer is to spawn a new thread for each client request. This can be achieved by setting the ServerType property to stThreadBlocking. Does spawning and destroying a thread for each client request an overhead? Yes. Obviously. But if our application design requires it, then there is no other way; you have to have that overhead. Can we reduce that overhead of creating and destroying threads? Yes. We can. How? Cache those threads. Right. The ThreadCacheSize property serves that purpose. The default value is 10 but this value depends on your client application needs. You should be very careful in setting this value. If you set it to a maximum value, you will end up in memory problems. If you set it to a very low value, the client will have a wait time for each request. So you have to determine a best value based on the client statistics. If the client requests are coming one at a time, then you can set the ServerType property to stNonBlocking." |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 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 by Thomas Breitkreuz