AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

fehler 10049

Offene Frage von "matze222"
Ein Thema von matze222 · begonnen am 10. Mär 2008 · letzter Beitrag vom 18. Mär 2008
Antwort Antwort
Seite 2 von 2     12   
matze222

Registriert seit: 8. Mär 2008
33 Beiträge
 
#11

Re: fehler 10049

  Alt 10. Mär 2008, 22:44
ja rate dochma^^
jane sry vergessn^^

ich hab n chat geschrieben (wie schon so viele vor mir) und wenn ihc mich mit dem client mit dem server verbinden will dauert das n mom und dann erscheint dieser fehler...
bzw wenn n kumpel das macht kommt der fehler 10060
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: fehler 10049

  Alt 11. Mär 2008, 08:51
Und wie hast du das programmiert? Indy? Welche Version? Vielleicht etwas Code, wo der Fehler auftritt.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
matze222

Registriert seit: 8. Mär 2008
33 Beiträge
 
#13

Re: fehler 10049

  Alt 11. Mär 2008, 12:50
man ihr seid aber auch anspruchsvoll...
aber nagut wenns sein muss^^

ich hab ne klassische client server verbindung genommen...
mit den sockets. delphi 6

client:

Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;
const
// Port, an dem der ServerSocket auf Clients wartet
SERVER_PORT = 12345;
type
// Verbindungszustände des Clients (für die Button-Steuerung)
TMyConState = (
mcsOffline, // nicht verbunden
mcsPending, // Verbindungsstatus ändert sich gerade
mcsOnline // verbunden
);
TForm1 = class(TForm)
    server: TEdit;
    nickname: TEdit;
    log: TMemo;
    btnconnect: TButton;
    btndisconnect: TButton;
    Clients: TListBox;
    btnsend: TButton;
    input: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    ClientSocket1: TClientSocket;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure BtnConnectClick(Sender: TObject);
procedure BtnDisconnectClick(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure BtnSendClick(Sender: TObject);
procedure InputKeyPress(Sender: TObject; var Key: Char);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
FMyConState: TMyConState;
procedure SetConState(const Value: TMyConState);
public
property ConnectionState: TMyConState read FMyConState write SetConState;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// bei Programmstart ausführen
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Port := SERVER_PORT; // Port setzen
ConnectionState := mcsOffline; // Buttons anpassen
end;
// neuer Verbindungsstatus -> GUI anpassen
procedure TForm1.SetConState(const Value: TMyConState);
begin
FMyConState := Value; // neuen Status speichern
// Buttons entsprechend de-/aktivieren
BtnConnect.Enabled := (Value = mcsOffline);
BtnDisconnect.Enabled := (Value = mcsOnline);
BtnSend.Enabled := (Value = mcsOnline);
end;
// bei Programmende ausführen
procedure TForm1.FormDestroy(Sender: TObject);
begin
BtnDisconnectClick(Self); // auf jeden Fall abmelden
end;
// Verbindung zum Server aufnehmen
procedure TForm1.BtnConnectClick(Sender: TObject);
begin
ConnectionState := mcsPending; // Buttons anpassen
ClientSocket1.Host := Server.Text; // Serveradresse übernehmen
ClientSocket1.Open; // Verbindung versuchen und warten, was passiert
// Verbindung OK: weiter bei ClientSocket1Connect(), sonst ClientSocket1Error()
end;
// Verbindung zum Server trennen
procedure TForm1.BtnDisconnectClick(Sender: TObject);
begin
ConnectionState := mcsPending; // Buttons anpassen
if (ClientSocket1.Active) then // noch verbunden?
ClientSocket1.Close // dann trennen und warten, was passiert
// Trennung OK: weiter in ClientSocket1Disconnect(), sonst ClientSocket1Error()
else
ConnectionState := mcsOffline; // sonst sind wir schon Offline
end;
// Verbindung zum Server ist aufgebaut und bereit zum Senden/Empfangen
procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
begin
ConnectionState := mcsOnline; // Buttons anpassen
Log.Clear; // Protokollfenster löschen
Log.Lines.Add('Verbunden mit: '+ClientSocket1.Socket.RemoteHost);
end;
// Verbindung zum Server (normal) getrennt
procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
ConnectionState := mcsOffline; // Buttons anpassen
Clients.Clear; // User-Liste leeren
Log.Lines.Add('Verbindung getrennt.');
end;
// Es ist ein Fehler in der Verbindung aufgetreten; sicherheitshalber trennen
procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
if (ClientSocket1.Active) then // noch verbunden?
ClientSocket1.Close; // ja, dann trennen
ConnectionState := mcsOffline; // Buttons anpassen
Clients.Clear; // User-Liste leeren
ErrorCode := 0; // Fehler behandelt, keine Exception erzeugen
Log.Lines.Add('Verbindungsfehler!');
end;
// Benutzernachricht senden ("reden")
procedure TForm1.BtnSendClick(Sender: TObject);
begin
ClientSocket1.Socket.SendText(Input.Text);
end;
// Eingabetaste im Textfeld -> senden und wieder alles auswählen
procedure TForm1.InputKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) then begin // Return/Enter gedrückt?
BtnSendClick(Self); // dann Text senden
Input.SetFocus; // Editfeld wieder auswählen
Input.SelectAll; // und den ganzen Text markieren
end;
end;
// Daten vom Server empfangen
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
begin
Log.Lines.Add(Socket.ReceiveText); // Daten lesen
end;
end.
und server:

Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;
const
// Port, an dem der ServerSocket auf Clients warten soll
SERVER_PORT = 12345;
type
TForm1 = class(TForm)
Log: TMemo;
Input: TEdit;
BtnSend: TButton;
Clients: TListBox;
ServerSocket1: TServerSocket;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure DeleteClient(Socket: TCustomWinSocket);
procedure ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
procedure BtnSendClick(Sender: TObject);
procedure InputKeyPress(Sender: TObject; var Key: Char);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSend(const Text: String);
procedure Broadcast(const Name, Text: String);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// bei Programmstart ausführen
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Port := SERVER_PORT; // Port setzen
ServerSocket1.Open; // Server aktivieren
end;
// bei Programmende ausführen
procedure TForm1.FormDestroy(Sender: TObject);
begin
if (ServerSocket1.Active) then begin // wenn der Server noch aktiv ist
Broadcast('System','Server beendet.'); // Clients benachrichtigen
ServerSocket1.Close; // und dann beenden
end;
end;
// ein neuer Client hat sich verbunden
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Clients.AddItem(Socket.RemoteHost,Socket); // in die Liste
end;
// Client aus der Userliste entfernen
procedure TForm1.DeleteClient(Socket: TCustomWinSocket);
var
i: Integer;
begin
i := Clients.Items.IndexOfObject(Socket); // Client noch in der Liste?
if (i > -1) then begin // ja
Clients.Items.Delete(i); // dann entfernen
end;
end;
// ein Client hat sich getrennt
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
DeleteClient(Socket); // Client aus der Userliste nehmen
end;
// Fehler in einer Clientverbindung aufgetreten; Client sicherheitshalber trennen
procedure TForm1.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
if (Socket.Connected) then // noch verbunden?
Socket.Close; // dann Verbindung trennen
DeleteClient(Socket); // Client aus der Userliste nehmen
ErrorCode := 0; // Fehler behandelt, keine Exception erzeugen
end;
// Daten zu allen Clients senden
procedure TForm1.ClientSend(const Text: String);
var
i: Integer;
begin
for i := 0 to Clients.Count-1 do // an alle Verbindungen...
(Clients.Items.Objects[i] as TCustomWinSocket).SendText(Text); // senden
end;
// Text-Meldung ausgeben und an die Clients weiterreichen
procedure TForm1.Broadcast(const Name, Text: String);
begin
Log.Lines.Add(Name+': '+Text);
ClientSend(Name+': '+Text);
end;
// System-Nachricht senden
procedure TForm1.BtnSendClick(Sender: TObject);
begin
Broadcast('System',Input.Text);
end;
// Eingabetaste im Textfeld -> senden und wieder alles auswählen
procedure TForm1.InputKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) then begin // Return/Enter gedrückt?
BtnSendClick(Self); // dann Text senden
Input.SetFocus; // Editfeld wieder auswählen
Input.SelectAll; // und den ganzen Text markieren
end;
end;
// Daten von einem Client empfangen
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
i: Integer;
begin
i := Clients.Items.IndexOfObject(Socket); // Client identifizieren
if (i > -1) then begin // Client ist in der Liste, Index "i" ist gültig
Log.Lines.Add(Socket.RemoteHost+': '+Socket.ReceiveText);
end
else // Client ist nicht in der Liste?! (sollte nicht auftreten)
Log.Lines.Add('Daten von unregistriertem Client empfangen: '+Socket.ReceiveText);
end;
end.
reicht das jetz?
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: fehler 10049

  Alt 11. Mär 2008, 13:20
Zitat von matze222:
man ihr seid aber auch anspruchsvoll...
aber nagut wenns sein muss^^

[Schnipp - Schnapp]

reicht das jetz?
Es wurde nach Etwas Code gefragt.

Das heisst nicht, dass Du uns gleich zumüllen musst.
Es hätte auch gereicht, wenn Du den Code als Attachement angehängt hättest.
Dann könnte jeder, der Interesse hat, sich den Code runterladen.
Wer kein Interesse hat, meterweise Code durchzuscrollen, der würde dann nicht belästigt.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: fehler 10049

  Alt 11. Mär 2008, 13:23
Und dann wäre noch interessant, wo der Fehler auftritt.

Bist du dir sicher, dass du deine ClientListbox immer synchron zu ServClientListe halten kannst. Da könnten ungewollt Unterschiede auftreten, welche zum Fehler führen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
matze222

Registriert seit: 8. Mär 2008
33 Beiträge
 
#16

Re: fehler 10049

  Alt 11. Mär 2008, 15:21
achja der fehler der fehler tritt auf wenn ich mich versuche mit dem client einzu loggn
das heißt wenn ich auf verbinden klicke
wenn n kumpel das macht , sprich über i-net dann kommt der fehler 10060

zum quell code...

ich hab doch keinen plan was ihr braucht

ich kenn mich halt noch nich so im programieren aus...
sry
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: fehler 10049

  Alt 12. Mär 2008, 08:55
Wenn der Fehler nur übers Internet passiert, dann würde ich mal auf fehlende NAT-Einstellungen auf deinem Router tippen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
matze222

Registriert seit: 8. Mär 2008
33 Beiträge
 
#18

Re: fehler 10049

  Alt 18. Mär 2008, 22:34
?????

noch mal auf deutsch bitte xD

ne das sagt mir leider gar nichts
is nich böse gemeint
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: fehler 10049

  Alt 18. Mär 2008, 23:03
du baust eine TCP-Verbindung von einem Client zu einem Server auf. Der Server ist ein Rechner der anscheinend über einen Router ans Internet gekoppelt ist. Dein Freund schickt an deinen Router die Anfrage für eine Verbindung und der Router weiß nichts damit anzufangen. Das simpelste wäre dann, im Router die NAT-Einstellungen anzupassen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
matze222

Registriert seit: 8. Mär 2008
33 Beiträge
 
#20

Re: fehler 10049

  Alt 18. Mär 2008, 23:32
okay

und was ist eine tcp verbindung?

und was die nat einstellungen?

sry ich hab echt so gar keine ahnung von sowas
jedenfalls was die fachbegriffe angeht xD

ich bin halt abei mir son bosle wissen anzueignen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz