PCs brechen Netzwerkverbindung ab?!

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

pixelshooter

BeitragDo, Nov 23, 2006 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
mit chat meinte ich eins der chatprogramme aus dem codearchiv^^
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragDo, Nov 23, 2006 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
@ pixelshooter:

ach so, hab mich auch schon gewundert Smile

@Jolinah:

Erstmal danke, dass du dich damit beschäftigt hast Very Happy

Am Port wirds denk ich kaum liegen, denn ich verwende port 8000 (und der wid schließlich sogar in einem tutorial verwendet, woraus ich wiederum schließe, dass er nicht von windows verwendet wird...

Die sache mit dem 3mal schreiben und nur einmal lesen hast du wohl nicht richtig gesehen, weil ich's nicht einheitlich gemacht, wie ich grad bemerkt hab.
Das eine Mal lesen befindet sich in einer For-Schleife, die dreimal durchlaufen wird Wink

Aber: Du meinst, das sendeprogramm ist das, welches hängen bleibt?
Idea Muss da gleichzeitig ein read-befehl auf der gegenseite ablaufen, damit es funktioniert oder wie? Das kann ich mir eigentlich gar net vorstellen, aber wenn ja, dann wäre ich ja eigentlich ganz dicht an der problemlösung...

weiterhin schließe ich aus deinem post, dass es hin und wieder mal vorkommen kann, dass irgendein "Abfall" gesendet wird, der das leseergebnis stört, oder versteh ich das falsch?

Ich glaub ich bin auf der richtigen spur, aber ich brauch noch ein paar antworten... Confused

-----

aber andererseits erinnere ich mich gerade zurück, dass das programm EXAKT das tut, was ich will, wenn ich beide instanzen auf einem rechner starte. Also brauch ich andererseits wieder nur die unterschiede zwischen "netzwerk" auf einem pc und echtem netzwerk zu wissen Question

Jolinah

BeitragDo, Nov 23, 2006 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Muss da gleichzeitig ein read-befehl auf der gegenseite ablaufen, damit es funktioniert oder wie?


Mehr oder weniger schon Wink Die Aufrufe in BB blockieren soviel ich weiss, das heisst das Sendeprogramm geht erst weiter wenn das Empfängerprogramm die Daten auch liest. Wahrscheinlich gibt es aber ein bestimmtes Timeout, so dass nicht unendlich lange gewartet wird.

Das mit den Mülldaten ist nicht so wichtig, war eigentlich nur dazu gedacht Fremdeinflüsse ein wenig einzudämmen ^^ Das heisst wenn ein Programmierer ein eigenes Programm schreibt und zu deinem Host willkürliche Daten sendet, dass dein Programm zumindest einige Daten überliest... aber in der Regel passiert sowas ja nicht.

pixelshooter

BeitragDo, Nov 23, 2006 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
also wenn mir hier jmd nen zweiten pc schenkt kann ich das auch mal testen xD
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragDo, Nov 23, 2006 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
oh mann, was ne k****!

aber ich glaube, ich habe das problem weiter eingegrenzt:

wenn der client zuerst mit seinen einstellungen fertig ist, erscheint nach beiderseitiger beendigung der einstellungen beim Server(!) die zusammenfassung derselben auf dem bildschirm, während beim client nur der "Bitte warten"-Satz dasteht.
umgekehrt, d.h. wenn der server zuerst fertig ist, steht bei beiden "Bitte warten". Confused

Und sofort danach hängt sich das netzwerk auf und ist auch nicht durch deaktivieren wiederherzustellen. ich muss sogar neu hochfahren, wenn ich nur ins internet will, da die local IP auf 127.0.0.1 zurückgesetzt wird Question Question

hilft das vielleicht irgendwie weiter bei der problemlösung?

pixelshooter

BeitragDo, Nov 23, 2006 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Question
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragFr, Nov 24, 2006 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm... ich hab grad nochmal ein einfaches beispielprogramm geschrieben, in dem der sender eben NICHT wartet, bis seine gesendeten daten gelesen werden Surprised irgendwie verwirrt mich das ganze hier immer mehr, je länger ich mich damit beschäftige Crying or Very sad

kann ich die dateien, die gesendet werden sollen, vielleicht einfach in ne schleife packen, die einfach so lange durchlaufen wird, bis die daten tatsächlich ausgelesen werden? aber dann kann ich vermutlich nicht sicher gehen, dass der Empfänger beim richtigen byte zu lesen beginnt, richtig? und außerdem wärs unglaublich kompliziert... Crying or Very sad

ich glaub der hinweis, der mich weiterbringen kann, ist der, der mir die unterschiede zwischen einem simulierten "Netzwerk" auf einem pc und einem echten netzwerk erklärt. Wink

bitte helft mir, sonst geb ich auf! Und das will doch hoffentlich niemand, oder? Crying or Very sad

Jolinah

BeitragFr, Nov 24, 2006 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry hab da was vertauscht, es ist natürlich genau umgekehrt Embarassed
Senden geht ohne dass der andere sofort liest. Aber wenn z.B. ReadByte steht und der andere nix sendet bleibt alles beim Lesen hängen. Man kann jedoch mit ReadAvail() prüfen wieviel noch gelesen werden kann, so dass es nie hängt.

Das heisst du könntest deine ReadAvails eigentlich weglassen, weil du ja sowieso warten willst bis etwas ankommt.

Natürlich muss eine Datei nur einmal gesendet werden. Aber es macht ja keinen Sinn eine Datei zu senden wenn sie nicht gelesen wird. Deshalb kann man schon sagen dass immer wenn auf der einen Seite gesendet wird, auf der anderen auch gelesen wird (auch wenn vielleicht nicht 100% Zeitgleich) Wink

PS: Und eigentlich besteht kein Unterschied ob man auf dem lokalen PC testet oder im Netz. Es sind ja die selben Übertragungsprotokolle. Lokal ist es einfach ein bisschen schneller.
 

Donald Agu

BeitragFr, Nov 24, 2006 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, meine readavails könnte ich schon weglassen, wenn der kram funktionieren würde... aber das war halt auch so ein versuch. in nem alten beispielprog von mir ging es ohne die nämlich nicht Question

außerdem: das interessanteste in deinem letzten post ist das wort "eigentlich" im P.S.: denn vielleicht besteht eigentlich kein unterschied, aber lokal läuft es, und im netz nicht Smile

na ja, danke erstmal soweit, ich werd versuchen aus den vorschlägen kapital zu schlagen...

wenns nicht klappt, meld ich mich wieder.

...sollte es klappen, auch, denn wie gesagt: ihr dürft dann ja alle mitspielen Wink
 

Donald Agu

BeitragFr, Nov 24, 2006 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, nachdem ich nach einer erneuten testphase meinen pc mittlerweile ungefähr 100.000 mal runtergefahren habe, kann ich neue ergebnisse präsentieren:

ich hab mein prog mal folgendermaßen modifiziert:
Code: [AUSKLAPPEN]

.
.
.
For a = 1 To 15
 For b = 0 To 11
 WriteByte stream,aktspieler(pc,a,b)
 Next
Next

For a = 1 To 15
 For b = 1 To 3
 WriteString stream,actplayer$(pc,a,b)
 Next
Next

WriteByte stream,teamgamestats(pc,12)
WriteByte stream,teamgamestats(pc,13)
WriteByte stream,teamgamestats(pc,14)

Cls
orange
Text 180,104,"Der Gegner nimmt noch Einstellungen vor..."
Text 180,130,"           -  bitte warten -"
standgas

Select pc
 Case 1
 anderesteam = 2
 Case 2
 anderesteam = 1
End Select

Repeat
byte = ReadAvail(stream)
Until byte <> 0
Print byte: WaitKey():End

For a = 1 To 15
.
.
.


also das programm soll hier nach dem schreiben einfach nur die zahl der empfangenen bytes anzeigen und sich dann beenden. So. eigentlich ganz einfach. eigentlich. Wink

jetzt steht da aber bei einem pc "666" ...

(kann das zufall sein? Twisted Evil eigentlich müsste da ja ...moment...15 x 12 + 15 x 3 + 3 = ... 228 stehen, oder?)

...und beim anderen "1". Komisch, oder? Noch komischer fand ich allerdings, dass sich der eine pc dann trotzdem wie immer aufgehängt hat und behauptet hat, ein netzwerkkabel wäre nicht angeschlosen...
Confused

An dieser stelle erlaube ich mir, nochmal meine abscheu gegenüber microsoft zu verdeutlichen: die bandbreite der möglichen bedeutung EINER EINZIGEN fehlermeldung (wie eben "Ein Netzwerkkabel ist nicht angeschlossen") erstreckt sich meist ins unermessliche, was äußerst benutzerfreundlich ist Very Happy

Aber dafür ist in Windows jetzt ja alles bunter Very Happy

pixelshooter

BeitragSa, Nov 25, 2006 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
äh...mom: müssen um die parameter von den writes nich () ? also bei mir schon.
Außerdem: in dem zweiten for...next hauptblock steht writestring: Das sendet natürlich mehr Bytes. -> jedesmal eines / stelle -> da kommt einiges zusammen Wink
hogge das hilft etwas
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragSa, Nov 25, 2006 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ne, um die parameter müssen keine (), sonst würde es ja überhaupt nicht funktionieren. au0erdem steht es so in der onlinehilfe...

Stimmt. Du hast recht, es werden natürlich ein paar mehr bytes durch das writestring gesendet, also stimmt meine rechnung nicht exakt Embarassed

das erklärt wohl auch die mysteriöse 666 Twisted Evil Wink

aber es erklärt nicht, warum meine sache nicht funktioniert Crying or Very sad

trotzdem danke

pixelshooter

BeitragSa, Nov 25, 2006 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
was ist denn im mom gerade das prob? Wink
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragMi, Nov 29, 2006 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
also gut, ich habe es zwar bisher bereits ca. 1.000.000 mal formuliert, aber bitte:

Mein Netzwerkprogramm funktioniert nicht, ein PC bricht die Netzwerkverbindung ab, die nicht wiederherstellbar ist (der PC reagiert erst wieder vernünftig, wenn die LAN-Verbindung manuell deaktiviert ist Confused ).

Der Witz dabei ist folgender:

Wenn ich das Programm in 2 Blitz-Instanzen auf einem Rechner starte, funktioniert es einwandfrei wie ich es mir vorstelle. Question Exclamation

Also: warum? eigentlich müsste mein programm doch funktionieren!

Jolinah

BeitragMi, Nov 29, 2006 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du denn schonmal im Debugmodus Befehl um Befehl einzeln ausgeführt? Bei Netzwerkprogrammen kann das sehr hilfreich sein, dann sieht man sofort ob und wann etwas hängt oder ob es irgend einen anderen Fehler gibt. In deinem Fall solltest du dann genau sehen, nach welchem Befehl die Netzwerkverbindung zusammenbricht. Und mit dieser Information bekommst du den Fehler viel schneller raus.

Zudem: Wenn das Programm lokal einwandfrei läuft dann kann im Programm theoretisch nicht der Fehler sein, dann liegts entweder an Router-Einstellungen, Ports oder am Netzwerk selber.

Aber das Debuggen lohnt sich immer, und sollte eigentlich vor allem anderen mal gemacht werden bei derartigen Problemen Wink
 

Donald Agu

BeitragDo, Nov 30, 2006 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe das mit dem debuggen natürlich schon gemacht. Wenn man's dabei ganz geschickt anstellt, läuft es sogar so richtig übers netzwerk. Aber generell nicht.

hmmm... aber ich muss es vermutlich mal auf nem anderen netzwerk ausprobieren, oder andere ports verwenden...

mal schaun... ich werde mich wieder melden

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group