Hilfe bei Sockets [Erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Hilfe bei Sockets [Erledigt]

Beitrag von Jan »

Hallo,

das hier ist kein normaler Hlfesuch-Diskussions-Thread.

Mein Problem: Ich habe seit ca. 3 Jahren ein Programm-Modul, das Daten mit einer Datenbank in den USA abfragt. Das mach ich per Sockets und HTML/1.1, GET, POST. Das hat immer sauber funktioniert.

Seit ca. 2 Monaten klappt das aber nicht mehr. Ich bekomme immer Server-Fehler, nur das Login selber klappt noch, die Datenabfragen danach nicht mehr. Ich habe das auch mit alten Programmversionen versucht, die eindeutig letztes Jahr noch funktionierten - Fehlanzeige.

Natürlich habe ich den Support für diese Datenbank kontaktiert. Leider haben die Jungs in den USA die Ruhe weg. Erst haben die behauptet, ich hätte in meiner Software die Header für die Requests geändert - was erstens nicht stimmt, und zweitens durch Tests mit alten Versionsständen vom vergangenen Jahr widerlegt ist. Diese Woche kamen die damit um die Ecke, das ich mit alten Standards arbeiten würde. Ich würde HTTP/1.0 senden, statt HTTP/1.1. Blödsinn, natürlich nehm ich 1.1, schon immer. Aber alleine mit diesen Diskussionen waren mal eben mehr als vier Wochen weg. In denen meine Kunden und ich nicht in die Datenbank rein kamen.

Irritierend ist auch, das die eine Sandbox haben. Wo Entwickler sich nach Belieben austoben können mit ihren Tests. Und da komme ich locker rein, alle Abfragen funktionieren einwandfrei. Nur im produktiven System nicht.

Ich will nicht leugnen, das ich eventuell irgendwas falsch mache. Denn ich bin der einzige Entwickler, der diese Probleme hat. Aber eben wie gesagt erst seit ca. 2 Monaten, vorher war ja alles in Ordnung. Ich tippe also darauf, das die intern irgendwas geändert haben, wo ich jetzt gegen die Wand fahre.

Der Gipfel war eine Mail, die ich gestern bekommen habe von denen. Da schreiben die:
Unfortunately, these are some of the issues you run into when you do not utilize industry standard libraries for making the HTTP calls. I would highly recommend that you use libraries to make the HTTP calls to help avoid these types of issues in the future.

Please let us know if there is anything else we can help you with.
Die spinnen doch! Die wollen mir jetzt ans Bein pinkeln, weil ich die Xbase++-Funktionen nutze. Die angeblich nicht Industrie-Standard sind. Die wollen, das ich irgend eine Standard-Bibliothek aus Java, PHP, sonstwas benutze.

Was ich jetzt brauche: Jemanden, der sich mit den Socket-Funktionen aus Xbase++ gut auskennt. Der sich mit den entsprechenden Protokollen gut auskennt. Eventuell mit Whireshark oder anderen Diagnosewerkzeugen arbeiten kann. Der mit mir mal das durchgeht, was ich sende, was erwartet wird, Korrektur-Vorschläge gibt. Da das den Rahmen hier im Forum sprengen würde, gerne bilateral. Auch per Teamviewer, oder wie auch immer. Wenn das zu umfangreich wird, auch notfalls gegen Rechnung.

Es ist übrigens keine Option, z. B. auf xb2.net umzusteigen. Nur um entsprechenden Vorschlägen vorzubeugen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von brandelh »

Hast du nicht mal Alaska gefragt, warum ihre Sachen da nicht richtig arbeiten (laut Aussage der Datenbank Hersteller ;-) ) ...
Wenn einer abschätzen kann woran es liegt, dann doch die ;-)
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von Martin Altmann »

Ich vermute mal eher, dass die jetzt secure sockets nutzen in ihrer Übertragung...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von Jan »

Hallo Hubert,

hab ich heute früh schon gemacht. Und ich bin sehr gespannt auf deren Reaktion dazu ... Ob die darüber lachen können, oder einen Tobsuchtsanfall bekommen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von Jan »

Martin,

die Requests laufen auf https://... und bei der Socketerstellung habe ich ein SocketNegotiateSSL() drin stehen. Das auch erfolgreich durchgeführt wird.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von Martin Altmann »

Welche Verschlüsselung?
Alaska kann (glaube ich) nicht alle Varianten...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von Martin Altmann »

Wenn das SocketNegotiateSSL erfolgreich durchgeführt wird - was genau meinst Du damit?
Einigen sich beide auf eine Verschlüsselung und die ist dann zu schwach bzw. wird nicht akzeptiert?
Oder kommst Du über das Handshaking hinaus und scheiterst danach an einem anderen Problem? Was sagen die debug-Logs? Oder hast Du von dem "Support" deiner Jungs kein entsprechendes Log zur Verfügung gestellt bekommen?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von Jan »

Martin,

von deren Support habe ich nichts erfahren außer: Request-Header geändert, alte HTTP-Version benutzt, Nicht-Industrie-Bibliotheken benutzt. Sonst überhaupt gar nichts. Achso, doch, eines schrieben die noch: Unter Laborbedingungen konnten die das gleiche Fehlverhalten feststellen. Ansonsten aber nicht. Was immer die mir damit sagen wollten.

Und wie ich schrieb: Die Autorisierung bekomme ich hin. Also das Anmelden auf der Datenbank mit meinen Zugangsdaten, da bekomme ich ein 200 zurück, also ein OK. Danach sende ich auf dem gleichen Socket weiter, aber bekomme immer deren 500er-Fehler zurück. Die behaupten jetzt, das wäre deren Fehler. Mein Zugriffsversuch mit dem HTTP/1.0 würde von denen falsch interpretiert, das würden die jetzt aber ändern. Wobei mir jetzt überhaupt nicht klar ist, was ich da falsch machen kann. Ich führe explizit den HTTP/1.1 im Request auf. Ansonsten gibt es doch keine in 1.0 erlaubten, in 1.1 aber verbotenen Header-Bestandteile? Mir ist bewußt, das z. B. Connection:keep-alive heute unnütz ist, aber nicht verboten. Oder gibt es doch Header-Bestandteile, die ich definitiv nicht mehr unter 1.1 nutzen darf? Da müsste ich dann mal überprüfen, ob ich die vielleicht einsetze.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von Martin Altmann »

Dass es entsprechende Header-Bestandteile gibt ist möglich. Wobei es aber andersherum eher wahrscheinlich ist.
Ob es "deprecated" Headerangaben gibt, müsste man mal googlen...
Schwach, wenn Sie dir nicht mal ein Logausschnitt zur Verfügung stellen können - da hätte ich innerhalb deiner Gemeinschaft ein wenig mehr Unterstützung erwartet.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von Martin Altmann »

Vielleicht hilft Dir das ein wenig weiter?

http://www8.org/w8-papers/5c-protocols/key/key.html

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Hilfe bei Sockets

Beitrag von Jan »

Im Laufe unseres XUG-Treffens hat sich das Problem gelöst. Martin hat darauf hingewiesen, das vermutlich einzelne Zeilen im Header gefordert werden würden. Das hat sich dann auch als korrekt herausgestellt - die beiden betreffenden Zeilen hatte ich nur in dem Anmelde-Hedaer drin, die mussten aber auch in die Folge-Header mit rein. Warum das aber ca. 3 Jahre schon ohne gelaufen ist, ist unklar. Aus der Diskussion mit dem Datenbankanbieter lese ich aber heraus, das die intern die Server umgestellt haben von HTTP/1.0 auf HTTP/1.1. Ob das die wirkliche Ursache ist, ist aber vollkommen unklar.

Danke an alle, die sich mit dem Thema beschäftigt und Ratschläge aprat hatten.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Hilfe bei Sockets [Erledigt]

Beitrag von brandelh »

Hattest du einmal probiert LoadFromUrl() direkt zu nutzen, das ist nämlich die höhersprachige Variante, die im Prinzip den anderen "Standard Bibliotheken" entspricht.
Welche Zeilen hast du eigentlich eingebaut, nur so aus Interesse ...
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Hilfe bei Sockets [Erledigt]

Beitrag von Jan »

Hallo Hubert,

ja, LoadFromUrl() hatte ich vergangene Woche auch getestet. Till hatte mich darauf gebracht. Das klappt auch in den meisten Fällen. Aber der kann "nur" GET und POST, ich brauche aber auch z. B. HEAD und DELETE. Was LoadFromUrl() halt nicht kann.

Was ich nach dem XUG-Treffen zusätzlich eingebaut hatte: Die Host-Zeile, die User-Agent-Zeile, und in der Adresszeile die Angabe von HTTP/1.1. Alle drei hatte ich bislang nur im Anmelde-Request drin stehen, und das hatte wie gesagt auch drei Jahre lang funktioniert, und funktioniert auch immer noch auf deren Testsystem. Wenn ich diese drei Angaben jetzt in jeden Request einbaue, klappt das alles sauber im produktiven System.

Till hat mir aber auch geschrieben, das mit dem nächsten Update auch ein Webclient mit in der 2.0 drin sein soll. Das wäre etwas, das ich mir dann genau anschauen würde. Wenn das die Abfragen einfacher, korrekter, stabiler baut, und mehr kann als LoadFromUrl(), wäre das genau die richtige Alternative.

Aber wie gesagt - erstmal ist zumindest dieses Problem hier gelöst. das war für mich schon ein ganz großer Schritt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Hilfe bei Sockets [Erledigt]

Beitrag von brandelh »

Ja jeder Request ist für sich selbst zu sehen, die Header müssen immer komplett rein.
Eigentlich stehen die ja in den "Syntaxvorschriften" von HTML - Ich meine RC und dann eine Nummer ...
aber da verging mir damals auch schnell die Lust am Lesen ;-)
Gruß
Hubert
Antworten