AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ESocketError (10057)
Thema durchsuchen
Ansicht
Themen-Optionen

ESocketError (10057)

Ein Thema von manuel · begonnen am 23. Okt 2004 · letzter Beitrag vom 11. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
manuel

Registriert seit: 17. Sep 2003
Ort: MainBootRecord
72 Beiträge
 
Delphi 4 Client/Server
 
#1

ESocketError (10057)

  Alt 23. Okt 2004, 22:00
Hi Leute,

ich versuche gerade eine einfache C/S-Anwendung mittels
TClientSocket und TServerSocket unter D3 zu schreiben.
Beim Empfangen der Nachricht mittels ReceifBuf erhalte ich immer eine
ESocketError (10057) - Exception.
Versuche ich das ganze mit sendText funktionierts komischerweise.

hier mal der Quelltext:

Delphi-Quellcode:
unit Unit1;

interface

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

    type
  CustomRec = record
    StartTag: integer;
    MSG_1: String;
    MSG_2: String;
    CheckSum: Integer;
    EndTag: integer;
end;


type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    Client: TClientSocket;
    Server: TServerSocket;
    ReceiveRec: CustomRec;
    SendRec: CustomRec;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin

Client:=TClientSocket.Create(Form1);
  Server:=TServerSocket.Create(Form1);
  Server.OnClientRead:=ServerClientRead;
Server.Port:=10024;
Client.Port:=10024;
  Client.Host:='127.0.0.1';
  Server.Open;
  Client.Open;




end;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Server.Socket.ReceiveBuf(ReceiveRec,sizeof(ReceiveRec));
showMessage(ReceiveRec.MSG_1);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
sendRec.MSG_1:='Test123';
Client.Socket.SendBuf(sendRec,sizeof(sendRec));
end;

end.
Wenn jemand ne Idee hätte, wäre ich sehr dankbar.

manuel
sometimes I feel diagonally parked in a parallel universe
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: ESocketError (10057)

  Alt 23. Okt 2004, 22:14
hi,

könnte es vielleicht daran liegen, dass du nicht ohne weiteres delphi-strings durchs netz schicken kannst? versuche mal deine strings-deklarationen im record zu begrenzen (string[50];zum beispiel).

klappt es dann?

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
manuel

Registriert seit: 17. Sep 2003
Ort: MainBootRecord
72 Beiträge
 
Delphi 4 Client/Server
 
#3

Re: ESocketError (10057)

  Alt 23. Okt 2004, 22:19
Hi Aenogym,

hab ich geändert, die Fehlermeldung ist immer noch die selbe...
nur die Fehlerbeschreibung sieht anders aus

manuel
sometimes I feel diagonally parked in a parallel universe
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: ESocketError (10057)

  Alt 23. Okt 2004, 22:20
Das kann man nicht, stimmt. Aber ich habe dabei immer ne AV bekommen und keinen Socket error.

Also: Der Record muss eine feste größe haben, die Strings müsen z.B. mit String[255] deklariert werden
  Mit Zitat antworten Zitat
manuel

Registriert seit: 17. Sep 2003
Ort: MainBootRecord
72 Beiträge
 
Delphi 4 Client/Server
 
#5

Re: ESocketError (10057)

  Alt 23. Okt 2004, 23:05
Das Problem mit dem String ist keins...
hab alle Strings rausgeworfen, die fehlermeldung ändert sich nicht.
Hat sonst noch jemand vorschläge?
sometimes I feel diagonally parked in a parallel universe
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#6

Re: ESocketError (10057)

  Alt 23. Okt 2004, 23:24
Hi!

Google sagt zu der Exception folgendes:
Zitat:
Socket Error # 10057

Socket error (#10057): Socket type not supported.

Analyse & Solutions: A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket) no address was supplied.

Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#7

Re: ESocketError (10057)

  Alt 11. Mär 2006, 11:33
das selbe spiel hab ich auch, hunderte posts aber keine wirkliche lösung...
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#8

Re: ESocketError (10057)

  Alt 11. Mär 2006, 11:37
Hallo,

ich hatte auch Probleme, allerdings beim Versenden eines Strings. Ich habe es gelöst, in dem ich nicht gleich nach Client.Open sende, sondern in der Prozedur Client.OnConnect.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#9

Re: ESocketError (10057)

  Alt 11. Mär 2006, 11:38
ich komme ja nciht einmal zum connecten
das ist ärgerlich
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: ESocketError (10057)

  Alt 11. Mär 2006, 12:14
1. Im OnConnect Aktionen ausführen
2. Im OnClientRead bitte auch vorher abprüfen, ob im Puffer überhaupt schon der gesamte Record zum auslesen bereit liegt. Man kann doch nicht einfach sagen, lese mir mal 1 Megabyte aus, wenn der gerade mal 4 Bytes empfangen hat. Also ReceiveLen überprüfen und entsprechend handeln im OnClientRead.
3. Wenn du kein Connect hinbekommst, dann sollte aber eine Fehlermeldung vom Socket kommen die dir Aufschluß darüber geben sollte, was schief gelaufen ist.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:29 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