Network - bitte testen

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Also ich habe eine billige XP-Home Version und bei mir tritt es nicht auf.
Jetzt fangen wir mal zu Raten an:
- Firewall von Norton oder andere ?
- Netzwerkanwendungen.

Ok, Info:
Ich hab mein Rechner mit TuneUp für DSL Optimiert.
Auhah, jetzt gibs ne welle. Nicht von Hand Optimiert.

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

Hi.
Also das Problem besteht leider weiterhin. Hat jemand eine Idee?
Ich dachte, das eventl. nicht an PB liegt (obwohl wohl teilweise unterschiedlicher Code bei Win98 und XP ausgeführt wird) sondern an einer begrenzung in der Verarbeitung der Sockets unter win98.
Aber da habe ich bisher keine Bestätigung gefunden.

Im Gegenteil, nun ist mir aufgefallen, das PB unter Windows98 nicht mehr als 40 Verbindungen von einem Clienten aufbaut bzw. der Server maximal 40 Verbindungen annimmt. Dann ist schluß. Ich weiß zwar das Windows98 ein Limit hat, aber dies ist soweit ich weiß höher (bei 200 oder 256 oder so). Andere Programme laufen soweit ich mal getestet hatte bei mir glaube ich mit mehr Verbindungen.
Als test habe ich einfach mal "192.168.1.102" und "127.0.0.1" aufgerufen, das Maxiumum an Verbindungen liegt bei mir bei 40 Connections. Auf WindowsXP geht es problemlos weiter.

Gruß
Toshy
1. Win10
PB6.1
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Dein Beispielcode ist nicht wirklich brauchbar!
Du connectest ständig zum Server, ohne dich jemals um dessen EingangsQueue zu kümmern.

Wenn du den Server vernünftig abarbeitest, tritt dein Problem auch nicht auf :
Fügt man nun "NetworkServerEvent()" ein, der Server also überprüft ob was eingegangen ist, das ausgibt und die (vermutlich) interne Eventliste kürzt, so gibt es keine Probleme mit dem Verbindungsaufbau.
Siehste, du beantwortest deine eigene Frage...
TCP/IP beruht auf Handshake!
Wenn du es lieber stumpfsinnig willst, benutze UDP.
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

Hallo.
Nun ich beantworte meine Frage nicht wirklich, denn es steht erstens nirgens geschrieben das man die EingangsQueue abarbeiten muß, damit es klappt, was aber wichtiger ist, das dies Problem nicht auf jedem WindowsBetriebssystem so ist. Es tritt bisher nur bei Windows98 auf. Also entweder liegt es am Betriebssystem oder an PB. Und das es an PB liegt ist nicht ausgeschlossen. Denn intern verwendet PB wohl je nach Betriebssystem eigene Routinen (sonst wäre das mit dem TrylockMutex()-Bug nicht auf diese Art faslch gelaufen).

Unabhängig davon aber durfte eine EingangsQueue von nur 5 (!!!) Eingängen nicht schon einen Fehler auslösen. Wenn dem so wäre, dann wäre es unmöglich einen Server zu schreiben der mit 1000 und mehr Clients anständig läuft. Zu kleineren Verzögerungen kommt es bei einem Server immer mal und sei es nur ne zehntel Sekunde.

Der Code ohne die Eventabfrage auf der Serverseite war also absichtlich so gedacht. Man muß es ja nachvollziehen können und den Unterschied erkennen zwischen den Betriebssystemen. Aber wie gesagt, auch mit dem (sogar schnellen) abfragen auf der Serverseite kommt es ständig zu diesen Fehlern wenn mehrere Clienten gleichzeit den Server ansprechen.

Unabhängig davon aber ist das Problem mit den dem Maximum von 40 Verbindungen unter Windows98 bei PB zu sehen. Ich kam noch nicht zum testen ob es an der Serverfunktion oder der clientfunktion liegt, aber irgendwo drann muß es ja liegen.
Und sei es, das mir da irgend eine besondere Information über eine Einschränkung bezüglich Verbindungen zu einem Server fehlen.
Windows98 selbst kann schon mehr als 40 Verbindugen verkraften soweit ich weiß.

Gruß
Toshy
1. Win10
PB6.1
Benutzeravatar
grapy
Beiträge: 108
Registriert: 09.09.2004 09:05

Beitrag von grapy »

Hallo,

bei mir geht es mit dem Testprogramm bis 100 und dann ist schluss...(WinXP Pro aufgebohrt)

aber warum das so ist, ist meiner ansicht nach völlig egal,
denn so macht es so oder so keinen sinn!!!

es sollte schon ein NetworkServerEvent() erfolgen,
denn dann funktioniert es auch mit z.B. 512 Connections.
möglicherweise läuft da ein Buffer über, der eben nicht auf jedem Betriebssystem gleich ist.

gruß :mrgreen: grapy :mrgreen:
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Hi,
also ich hab hier ein Windows Home laufen, XP Antispy -> Unlimited Connections.

Der Testcode läuft bis Hundert, das liegt auch garantiert nicht am max connection Limit Pro Minute denn dieser Code(Delay(60 000) eingebaut):

Code: Alles auswählen

OpenConsole() 
init.l = InitNetwork() 
Debug init 
PrintN("init="+Str(init)) 
server.l = CreateNetworkServer(#PB_Any,2222,#PB_Network_TCP) 
PrintN("server="+Str(server)) 
For i = 1 To 512 
   Debug "i="+Str(i) 
   Ergebnis = OpenNetworkConnection("127.0.0.1", 2222 ,#PB_Network_TCP) 
   ;  Ergebnis = OpenNetworkConnection("192.168.1.100", 2222 ,#PB_Network_TCP) 
   Debug Ergebnis 
   PrintN("Ergebnis="+Str(Ergebnis)) 
   If Ergebnis=0
   Delay(1000*60)
   EndIf
Next i 
While 1 
   Delay(1) 
Wend 
CloseConsole()
geht auch nicht weiter....
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Funktioniert bei meiner Socketlibrary merkwürdigerweise auch nicht.
Scheint eine Limitierung von Windows zu sein. Wenn man aber vorher
noch ab und an die Events vom Server durch läuft, ist es ein Roulett-
spiel ob die Verbindung aufgebaut wurde oder nicht...

///Edit:
mh,
While NetworkServerEvent(): Wend
am Anfang der Schleife und alles ist gegessen...

///Edit:
Ha, bei meiner Socketlib funktioniert es jetzt auch ordentlich <_<
Bild
Sebe
Beiträge: 585
Registriert: 11.09.2004 21:57
Wohnort: Europa
Kontaktdaten:

Beitrag von Sebe »

Bei mir gehts bis 20. WinXP Pro SP2 + alle Updates
heinz.goldbach
Beiträge: 93
Registriert: 16.11.2005 18:27
Wohnort: Neuss

Beitrag von heinz.goldbach »

Bei mir auch nur bis 5. Auch nach der Erhöhung der Verbindungen auf 10.
System XP Pro, SP 1
---------------------------------------------------
Man lernt nur aus Fehlern!
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Warum es nach wenigen Connections nicht weiter geht ohne
NetworkServerEvent() könnt ich auch nur spekulieren ...

Aber welcher Server hat kein NetworkServerEvent() in der Hauptschleife?
:D

Somit tritt das Problem doch garnicht auf, solang das Serverprogramm
sauber läuft wird es keine Probleme geben, und wenn der Server ins
stocken gerät, dann gibs eh irgend welche Probleme, zu viel zu tun z.B. ...
somit wäre es auch akzeptabel wenn nur noch jede 2. Verbindung z.B.
klappen würde, Server ist einfach überlasstet, also wird alles langsamer,
anfälliger.

Hat das mal wer mit einer anderen Programmiersprache probiert, also
ohne die Events ab zu fragen? ...
Oder wenn die Frage wirklich beantwortet werden soll, wie es zu dem
Connectionproblem kommt, sollte einer sich mal mit Fred in verbindung
setzten und das klären :D . Sonnst bleibt es hier vermutlich beim Raten
:wink: . Die Antwort sollte dann natürlich hier gepopostet werden.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Gesperrt