OpenNetworkConnectionEx() mit Timeout

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
N00B
Beiträge: 122
Registriert: 11.07.2007 22:28

Beitrag von N00B »

:lol:

Das Selbe Problem hab ich auch, der Debugger zeigt nicht mal in welcher Zeile das Problem auftritt :cry:

Kann da Bitte einer von den Profis hier helfen ?

Ich bin nur ein Noob :freak:
Benutzeravatar
legion
Beiträge: 467
Registriert: 08.10.2006 18:04
Computerausstattung: Intel Core i5-6500 @ 4x 3.6GHz mit Windows 10 Pro, Intel Core-i7 mit Ubuntu 18.04 bionic, x86_64 Linux 4.18.0-16-generic, Microsoft Surface Pro - Windows 10 Pro
Wohnort: Wien
Kontaktdaten:

Beitrag von legion »

dysti hat geschrieben:Hey,
im ersten Beispiel bekomme ich ein "Invalid Memory Access"
und im zweiten Beispiel in der Zeile "CALL SYS_CopyString" ein "undefined symbol".
Wie bekomme ich die Errors weg. Von ASM keinen Schimmer.
(Pb 4.02)
Hallo !
Der Code dürfte rechnerspezifisch sein. Funktioniert einwandfrei auf meiem
alten Celeron, am neuen DualCore kommen genau diese Fehler.
Oder es liegt am schnelleren DDR2 RAM !

Lg. Legion
PB 5.71 LTS Windows 10 Pro & Ubuntu 18.04.2 LTS & Linux Mint 19.3
-----------------------------------------------------
Alles ist, wie man glaubt, dass es ist!
Benutzeravatar
N00B
Beiträge: 122
Registriert: 11.07.2007 22:28

Beitrag von N00B »

hmm ich hab enn Dual Core.

Mist.

Hab nur Ärger damit :cry:

Will meinen alten Athlox 2400 zurück mit dem hatte ich nie solche Probleme :|

z.B startet der altbekannte RegCleaner (die Freeware, von dem Hersteller von jv16 Powertools) auf dem dämmlichen Dual Core Mist den ich hab nicht mehr.

Es startet zwar in der Prozessliste, aber das war es dann auch schon.

Schalte ich dann in den Kompatiblitätsmodus für ein Win vor 2k das nur eine CPU nutzt, startet es und stürtzt bei der Durchsuchung der Registrierung ab.

:|

Warscheinlich da es bei dann nach Win98/Me Schlüsseln sucht die es einfach nicht gibt.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Was mich bei dem Code wundert ist, dass er in Assembler geschrieben ist. Da darin lediglich API-Aufrufe zur Umsetzung genutzt werden kann man das auch in PureBasic selbst machen.

Ich hab übrigens auch einen Dual Core (leider von der falschen Firma). Hab aber weder Vorteile noch Nachteile ausmachen können.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

real hat geschrieben:Was mich bei dem Code wundert ist, dass er in Assembler geschrieben ist. Da darin lediglich API-Aufrufe zur Umsetzung genutzt werden kann man das auch in PureBasic selbst machen.
Tjo wärst mal früher hier gewesen. MLK hatte 2-3 Codes veröffentlicht nur mit Assembler, obwohl diese auch in PureBasic möglich gewesen wären. Er hat damals als Begründung angegeben, dass er gerade Assembler lernt.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
legion
Beiträge: 467
Registriert: 08.10.2006 18:04
Computerausstattung: Intel Core i5-6500 @ 4x 3.6GHz mit Windows 10 Pro, Intel Core-i7 mit Ubuntu 18.04 bionic, x86_64 Linux 4.18.0-16-generic, Microsoft Surface Pro - Windows 10 Pro
Wohnort: Wien
Kontaktdaten:

Beitrag von legion »

real hat geschrieben:Was mich bei dem Code wundert ist, dass er in Assembler geschrieben ist. Da darin lediglich API-Aufrufe zur Umsetzung genutzt werden kann man das auch in PureBasic selbst machen.
z.B. genau so ...

Code: Alles auswählen

Procedure$ GetHostIP(Host$)
 THostinfo = gethostbyname_(Host$)
 If THostinfo <> 0
  CopyMemory (THostinfo, Hostinfo.HOSTENT, SizeOf(HOSTENT))
  While PeekL(Hostinfo\h_addr_list+AdressNumber*4)
   IPAddress = PeekL(Hostinfo\h_addr_list+AdressNumber*4)
   AdressNumber+1
  Wend
 EndIf
 ProcedureReturn StrU(PeekB(IPAddress),0)+"."+StrU(PeekB(IPAddress+1),0)+"."+StrU(PeekB(IPAddress+2),0)+"."+StrU(PeekB(IPAddress+3),0)
EndProcedure

InitNetwork()
MessageRequester("IP-Adresse", GetHostIP("www.purearea.net")) 
PB 5.71 LTS Windows 10 Pro & Ubuntu 18.04.2 LTS & Linux Mint 19.3
-----------------------------------------------------
Alles ist, wie man glaubt, dass es ist!
Benutzeravatar
N00B
Beiträge: 122
Registriert: 11.07.2007 22:28

Beitrag von N00B »

Ok aber der Code hat ja auch nichts mit nem Timeout zu tun <)

Denn mit Purebasic selber kriegt man das anscheinend nicht hin, da muss so´n Winapi Zeuch benutzt werden.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

AMD Athlon(tm) 64 X2 Dual Core Prozessor 4400+

Code läuft nicht unter PB v4.02 aber unter PB v3.94.
Liegt also nicht am Prozessor.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
N00B
Beiträge: 122
Registriert: 11.07.2007 22:28

Beitrag von N00B »

Mist :-(

Brauche ein Threadsicheres PB :-(

Somit bringt mir der Code 0 :(
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Bei PB v4.0 wird nicht mehr die ConnectionID (Handle) zurück gegeben, sonder eine interne ID.

Erst mit "Ergebnis = ConnectionID(Verbindung)" hat man das Handle (Socket).

Der Code liefert aber die Socket.
http://www.purebasic.fr/english/viewtop ... sa+timeout
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten