![]() |
socket error 10053
ich bekomme den socket error 10053 ich hoffe um hilfe.
Server:
Delphi-Quellcode:
Client:
procedure Tform1.bsvcontrClick(Sender: TObject);
begin if serversock.Active then begin bsvcontr.caption:='Server ist offline'; serversock.active:=false; serversock.socket.close; end else begin if serversock.Active=false then begin bsvcontr.caption:='Server ist online'; serversock.Port:=628; serversock.active:=true; serversock.Open; end; end; end; procedure Tform1.serversockClientWrite(Sender: TObject; Socket: TCustomWinSocket); var rec1:iprec; z:integer; begin serversock.Socket.ReceiveBuf(rec1,sizeof(rec1)); z:=serversock.socket.ActiveConnections; stringgrid.cells[z,1]:=rec1.clientip; stringgrid.cells[z,2]:=rec1.clienthost; end; procedure Tform1.serversockClientRead(Sender: TObject; Socket: TCustomWinSocket); var rec1:iprec; z:integer; begin serversock.Socket.ReceiveBuf(rec1,sizeof(rec1)); z:=serversock.socket.ActiveConnections; stringgrid.cells[z,1]:=rec1.clientip; stringgrid.cells[z,2]:=rec1.clienthost; end;
Delphi-Quellcode:
procedure Tform1.loginbuttonClick(Sender: TObject);
var rec1:iprec; begin clientsock.Port:=628; clientsock.Host:='127.0.0.1'; clientsock.active:=true; end; procedure Tform1.clientsockConnect(Sender: TObject; Socket: TCustomWinSocket); var rec1:iprec; begin rec1.clientip:=ip; rec1.clienthost:=host; clientsock.open; clientsock.Socket.SendBuf(rec1,sizeof(rec1)); end; |
Re: socket error 10053
Keine Antwort?
Socket Error 10053 heißt, dass das Programm die Verbindung abgebrochen hat und folglich der Server error 10057 bekommt, da er nicht bekommen kann. Ich hoffe auf Hilfe |
Re: socket error 10053
*nachobenschieb*
|
Re: socket error 10053
Hi,
wenn mich nicht alles täuscht is das spammen nicht ganz erlaubt oder? und zu deinem Problem, da wirst du dir doch wohl selbst mal nen paar Gedanken machen können?! Immerhin bekommt hier niemand Geld für kompetente Antworten... so evl. hilft dir das hier ![]() |
Re: socket error 10053
Ne das hilft mir gar nicht, weil die Meldung sagt, dass das Programm die Verbindung unterbricht, ich weiß aber nicht wo sowas in meinem Programm vorkommt. => Ich hab mir Gedanken gemacht und auch nen Freund gefragt. Der hatte aber auch keine Lösung.
Außerdem wollte ich ja das der Thread nicht in Vergessenheit gerät. Nächste mal weiß ich es besser. |
Re: socket error 10053
Zitat:
*gnade erteilt* ...:cat:... |
Re: socket error 10053
Der Fehler kommt am Server oder am Client? Wann genau, bin nicht so recht schlau geworden aus obigen :-)
...:cat:... |
Re: socket error 10053
Am Client erscheint der error code 10053, was bedeutet, dass der Server die Verbindung abgebrochen hat. Darauf sagt der Server dann praktisch dass er keinen Record empfangen konnte, da der Cleint ja nicht mehr connected ist.
@Mod: Wäre nett wenn die obige Fehlerbeschreibung am Anfang meines ersten Threads gesetzt werden könnte, da ich ihn nicht mehr so editieren kann, und vielleicht der 2 Thread von mir ganz weg, wo ich die fehlermeldung erkläre. Im Vorraus schonmal Danke. |
Re: socket error 10053
Hi,
zu deinem Code is folgendes zusagen :)
Delphi-Quellcode:
In dem ersten BEGIN END Block solltest du erst die Sockets schliessen dann den Socket auf false setzten :)
procedure Tform1.bsvcontrClick(Sender: TObject);
begin if serversock.Active then begin bsvcontr.caption:='Server ist offline'; serversock.active:=false; serversock.socket.close; end else begin if serversock.Active=false then begin bsvcontr.caption:='Server ist online'; serversock.Port:=628; serversock.active:=true; serversock.Open; end; end; end;
Delphi-Quellcode:
wer soll denn hier lesen?! Der Server oder der Client? In der Procedure Liest der Server wenn der Client list ... aber was? Der Server sollte evl. besser lesen wenn der Client sendet oder?
procedure Tform1.serversockClientRead(Sender: TObject;
Socket: TCustomWinSocket); var rec1:iprec; z:integer; begin serversock.Socket.ReceiveBuf(rec1,sizeof(rec1)); z:=serversock.socket.ActiveConnections; stringgrid.cells[z,1]:=rec1.clientip; stringgrid.cells[z,2]:=rec1.clienthost; end;
Delphi-Quellcode:
So das is alles was mit ao aufanhieb auffällt ... evl. kannst du noch nen bissel mehr Code oder gleich das ganze Prog posten dann kann man besser helfen :) und sorry wenn ich dich grad nen bissel häftig angefahren hab!!
procedure Tform1.clientsockConnect(Sender: TObject;
Socket: TCustomWinSocket); var rec1:iprec; begin rec1.clientip:=ip; rec1.clienthost:=host; clientsock.open; clientsock.Socket.SendBuf(rec1,sizeof(rec1)); end; |
Re: socket error 10053
Also hier kommt der ganze Quallecode, allerdings hab ich jetzt nach dne paar Änderungen den error 10049 (Cannot assign requested address) wenn ich auf den Login Button beim Client clicke. Wegen der IP, ich hab es im netzwerk versucht, und davor it 127.0.0.1 als IP.
Server
Delphi-Quellcode:
unit main;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FileCtrl,options,Registry,Winsock, ScktComp, IdBaseComponent, IdComponent, IdTCPServer, Grids, IdTCPConnection, IdTCPClient, ComCtrls,shellapi; type mainRecord = Packed Record what:integer; clientip:string[250]; film1:string[250]; vote:integer; end; type iprec = Packed Record clientip:string[100]; clienthost:string[100]; end; type Tform1 = class(TForm) options: TButton; Label1: TLabel; filmliste: TFileListBox; bsvcontr: TButton; Label2: TLabel; lIP: TLabel; lHostname: TLabel; Label3: TLabel; stringgrid: TStringGrid; Label4: TLabel; Button2: TButton; countvotebutton: TButton; Edit1: TEdit; serversock: TServerSocket; procedure optionsClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure serverClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure bsvcontrClick(Sender: TObject); procedure countvotebuttonClick(Sender: TObject); procedure Button2Click(Sender: TObject); procedure serversockClientWrite(Sender: TObject; Socket: TCustomWinSocket); private { Private-Deklarationen } public { Public-Deklarationen } end; var form1: Tform1; ip,host:string; clientsactive:integer; implementation {$R *.DFM} //ip funktion function GetComputerNetName: string; var buffer: array[0..255] of char; size: dword; begin size := 256; if GetComputerName(buffer, size) then Result := buffer else Result := ''; end; function GetLocalIPs: string; type PPInAddr = ^PInAddr; var wsadata : TWSAData; hostinfo : PHostEnt; addr : PPInAddr; begin Result := ''; if(WSAStartUp(MAKEWORD(1,1),wsadata) = 0) then try hostinfo := gethostbyname(nil); if(hostinfo <> nil) then begin addr := pointer(hostinfo^.h_addr_list); while(addr^ <> nil) do begin Result := Result + inet_ntoa(addr^^) + ^M^J; inc(addr); end; end; finally WSACleanUp; end; end; procedure Tform1.optionsClick(Sender: TObject); begin form2.showmodal; end; procedure Tform1.FormActivate(Sender: TObject); var regist: TRegistry; var ip: string; begin clientsactive:=0; //Stringgrid schreiben stringgrid.cells[0,0]:='Name'; stringgrid.cells[0,1]:='IP'; stringgrid.cells[0,2]:='Voted for:'; stringgrid.cells[1,0]:='Client1'; //regestry lesen {regist:=TRegistry.Create; regist.RootKey:=HKEY_CURRENT_USER; regist.OpenKey('Software\Reaper Productions\Vote Tool', true); filmliste.directory:=regist.Readstring('direct'); regist.OpenKey('Software\Reaper Productions\Vote Tool\VLC', true); vlcpath:=regist.readstring('vlcpa'); vlcname:=regist.readstring('vlcna'); regist.free;} filmliste.mask:='*.mpg;'+'*.mpeg;'+'*.avi;'; //ip addresse einlesen und ausgeben ip:=GetLocalIPs; host:=GetComputerNetName; lhostname.caption :=host; lip.caption:=ip; end; procedure Tform1.serverClientRead(Sender: TObject; Socket: TCustomWinSocket); var z:integer; rec1:mainrecord; begin //filmliste end; procedure Tform1.bsvcontrClick(Sender: TObject); begin if serversock.Active then begin bsvcontr.caption:='Server ist offline'; serversock.active:=false; serversock.socket.close; end else begin bsvcontr.caption:='Server ist online'; serversock.Port:=628; serversock.active:=true; serversock.Open; end; end; procedure Tform1.countvotebuttonClick(Sender: TObject); var z,max,maxnr:integer; voted,votecomm:string; votefeld:array[1..100] of Integer; begin //alles auf 0 setzen max:=0; maxnr:=0; for z:=1 to 50 do begin votefeld[z]:=0; end; //filmvotes zählen for z:=1 to (stringgrid.colcount-1) do begin inc(votefeld[(strtoint(stringgrid.cells[z,2]))]); end; //maximum suchen for z:=1 to (stringgrid.colcount-1) do begin if votefeld[z]>max then begin max:=votefeld[z]; maxnr:=z; end; end; showmessage('Der gevotete Film ist' +filmliste.items[maxnr]+' ('+inttostr(maxnr) +') mit '+inttostr(max)+' votes. Stream wird jetzt gestartet auf 239.239.239.1:1234'); filmliste.itemindex:=maxnr; //stream starten try voted:=filmliste.directory+'/'+filmliste.items[maxnr]; edit1.Text:=voted; ShellExecute(Application.Handle, 'open' , PChar(vlcname), Pchar('-vvv '+voted+' --sout udp://239.239.0.1 --ttl 1'), PChar(vlcpath), sw_ShowNormal); except showmessage('Befindet sich nicht auf dem Server Rechner deswegen kein stream möglich'); end; end; procedure Tform1.Button2Click(Sender: TObject); var rec1:mainrecord; begin rec1.film1:=filmliste.items[0]; serversock.Socket.SendBuf(rec1,sizeof(rec1)); end; procedure Tform1.serversockClientWrite(Sender: TObject; Socket: TCustomWinSocket); var rec1:iprec; z:integer; begin serversock.Socket.ReceiveBuf(rec1,sizeof(rec1)); z:=1; //serversock.socket.ActiveConnections; stringgrid.cells[z,1]:=rec1.clientip; stringgrid.cells[z,2]:=rec1.clienthost; end; end. Client
Delphi-Quellcode:
unit main;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FileCtrl,options,Registry,Winsock, ScktComp, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdTCPServer, Menus; type mainRecord = Packed Record what:integer; clientip:string[250]; film1:string[250]; vote:integer; end; type iprec = Packed Record clientip:string[100]; clienthost:string[100]; end; type Tform1 = class(TForm) options: TButton; Label1: TLabel; filmliste: TFileListBox; bvote: TButton; Label2: TLabel; eip: TEdit; lIP: TLabel; lHostname: TLabel; Label3: TLabel; loginbutton: TButton; clientsock: TClientSocket; procedure optionsClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure eipChange(Sender: TObject); procedure bvoteClick(Sender: TObject); procedure loginbuttonClick(Sender: TObject); procedure clientsockWrite(Sender: TObject; Socket: TCustomWinSocket); procedure clientsockRead(Sender: TObject; Socket: TCustomWinSocket); procedure clientsockConnect(Sender: TObject; Socket: TCustomWinSocket); private { Private-Deklarationen } public { Public-Deklarationen } end; var form1: Tform1; ip,host:string; implementation {$R *.DFM} //ip funktion function GetComputerNetName: string; var buffer: array[0..255] of char; size: dword; begin size := 256; if GetComputerName(buffer, size) then Result := buffer else Result := ''; end; function GetLocalIPs: string; type PPInAddr = ^PInAddr; var wsadata : TWSAData; hostinfo : PHostEnt; addr : PPInAddr; begin Result := ''; if(WSAStartUp(MAKEWORD(1,1),wsadata) = 0) then try hostinfo := gethostbyname(nil); if(hostinfo <> nil) then begin addr := pointer(hostinfo^.h_addr_list); while(addr^ <> nil) do begin Result := Result + inet_ntoa(addr^^) + ^M^J; inc(addr); end; end; finally WSACleanUp; end; end; procedure Tform1.optionsClick(Sender: TObject); begin form2.showmodal; end; procedure Tform1.FormActivate(Sender: TObject); var regist: TRegistry; var ip: string; begin //regestry lesen {regist:=TRegistry.Create; regist.RootKey:=HKEY_CURRENT_USER; regist.OpenKey('Software\Reaper Productions\Vote Tool', true); filmliste.directory:=regist.Readstring('direct'); regist.OpenKey('Software\Reaper Productions\Vote Tool\VLC', true); vlcpath:=regist.readstring('vlcpa'); vlcname:=regist.readstring('vlcna'); regist.free;} //ip addresse einlesen und ausgeben ip:=GetLocalIPs; host:=GetComputerNetName; lhostname.caption :=host; lip.caption:=ip; end; procedure Tform1.eipChange(Sender: TObject); begin clientsock.Host:=eip.text; end; procedure Tform1.bvoteClick(Sender: TObject); var rec1:mainrecord; begin if filmliste.itemindex = -1 then begin showmessage('einen Film auswählen'); end; //rec bestimmen //what für liste senden definieren rec1.what:=2; //client daten bereitstellen rec1.vote:=filmliste.itemindex; //senden clientsock.Socket.SendBuf(rec1,sizeof(rec1)); end; procedure Tform1.loginbuttonClick(Sender: TObject); var rec1:iprec; begin clientsock.Port:=628; clientsock.Host:='192.168.0.1'; clientsock.Active:=true; clientsock.open; end; procedure Tform1.clientsockWrite(Sender: TObject; Socket: TCustomWinSocket); var rec1:mainrecord; begin {filmliste.Items.clear; //lesen und in liste schreiben clientsock.Socket.ReceiveBuf(rec1,SizeOf(rec1)); filmliste.Items.Add(rec1.film1); } end; procedure Tform1.clientsockRead(Sender: TObject; Socket: TCustomWinSocket); var rec1:mainrecord; begin showmessage('hallo'); end; procedure Tform1.clientsockConnect(Sender: TObject; Socket: TCustomWinSocket); var rec1:iprec; begin rec1.clientip:=ip; rec1.clienthost:=host; clientsock.Socket.SendBuf(rec1,sizeof(rec1)); end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 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-2025 by Thomas Breitkreuz