PCs brechen Netzwerkverbindung ab?!
Übersicht

![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
mit chat meinte ich eins der chatprogramme aus dem codearchiv^^ | ||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ pixelshooter:
ach so, hab mich auch schon gewundert ![]() @Jolinah: Erstmal danke, dass du dich damit beschäftigt hast ![]() 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 ![]() Aber: Du meinst, das sendeprogramm ist das, welches hängen bleibt? ![]() 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... ![]() ----- 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 ![]() |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Muss da gleichzeitig ein read-befehl auf der gegenseite ablaufen, damit es funktioniert oder wie?
Mehr oder weniger schon ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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". ![]() 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 ![]() ![]() hilft das vielleicht irgendwie weiter bei der problemlösung? |
||
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() |
||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmmm... ich hab grad nochmal ein einfaches beispielprogramm geschrieben, in dem der sender eben NICHT wartet, bis seine gesendeten daten gelesen werden ![]() ![]() 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... ![]() 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. ![]() bitte helft mir, sonst geb ich auf! Und das will doch hoffentlich niemand, oder? ![]() |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry hab da was vertauscht, es ist natürlich genau umgekehrt ![]() 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) ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 ![]() 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 ![]() |
||
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. ![]() jetzt steht da aber bei einem pc "666" ... (kann das zufall sein? ![]() ...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... ![]() 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 ![]() Aber dafür ist in Windows jetzt ja alles bunter ![]() |
||
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
ä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 ![]() hogge das hilft etwas |
||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() das erklärt wohl auch die mysteriöse 666 ![]() ![]() aber es erklärt nicht, warum meine sache nicht funktioniert ![]() trotzdem danke |
||
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
was ist denn im mom gerade das prob? ![]() |
||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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. ![]() ![]() Also: warum? eigentlich müsste mein programm doch funktionieren! |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group