PCs brechen Netzwerkverbindung ab?!

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Donald Agu

Betreff: PCs brechen Netzwerkverbindung ab?!

BeitragSa, Nov 18, 2006 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, zu beginn meines progs werden variablen zwischen 2 pcs hin- und hergeschickt. Das funktioniert anfangs gut, doch wenn ich es in einer schleife tue, kommt bei einem pc immer die meldung "Ein Netzwerkkabel ist nicht angeschlossen" in der Startleiste, und der andere PC hängt sich auf und ist nur mit viel Geduld wieder auf die Reihe zu bekommen.

Die Netzwerkverbindung lässt sich aber mysteriöserweise nur mit einem Neustart des PCs wiederherstellen. Rolling Eyes Question

ich hab hier mal eben einen auszug aus dem code:

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
 gegner = 2
 Case 2
 gegner = 1
End Select

For a = 1 To 15
 For b = 0 To 11
  Repeat
  byte = ReadAvail(stream)
  Until byte <> 0
 aktspieler(gegner,a,b) = ReadByte(stream)
 Next
Next

For a = 1 To 15
 For b = 1 To 3
  Repeat
  byte = ReadAvail(stream)
  Until byte <> 0
 actplayer$(gegner,a,b) = ReadString$(stream)
 Next
Next

For a = 12 To 14
 Repeat
 byte = ReadAvail(stream)
 Until byte <> 0
teamgamestats(gegner,a) = ReadByte(stream)
Next


stream ist naheliegenderweise global als die stream-ID definiert, ansonsten sind denke ich keine erläuterungen notwendig... ach ja, doch. In den functions orange und standgas ist nur die schriftfarbe deklariert.

also: warum spinnt die sache bei mir? es ist 100%-ig ein code-fehler, in anderen programmen funzt das netzwerk einwandfrei. Question
 

c64

BeitragSa, Nov 18, 2006 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Den Fehler in deinem Code kann ich dir so momentan nicht sagen aber
nachdem dein Netzwerk den Ar*** hochgerissen hat deaktiviere es und schalte es wieder ein so musst du EVTL. !! den PC nicht wieder neustarten.

Und versuche mal dein Code local auf einem Rechner auszuführen also 2 Instanzen deines Programms im Fenstermodus starten und testen als wenn du es über 2 Rechner machen würdest. Damit kommst du dem Fehler evtl. auf die Spur.

mfg

c64
Betreten verboten! Kinder haften für ihre Eltern!
 

Donald Agu

BeitragSa, Nov 18, 2006 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wusste nicht, dass ich das auch auf einem PC laufen lassen kann. Erspart mir einiges Surprised .

So. Jetzt wirds aber langsam interessant: wenn ich zwei instanzen auf einem rechner starte, funktioniert die geschichte einwandfrei genau so, wie ich's mir vorstelle. Aber warum geht es dann im netzwerkmodus nicht?!?

Und was mich auch interessieren würde: wieso wurden in beiden programmen nach dem seedrnd millisecs() exakt die gleichen zufallszahlen ausgewürfelt?
eigentlich auch komisch... ist das dann über netzwerk auch so? wäre ja super!

aber das erstmal hinten angestellt. Wieso geht es an einem PC und über netzwerk nicht? Kann doch eigentlich nur daran liegen, dass die verbindung zu langsam ist, oder?
 

Donald Agu

BeitragMo, Nov 20, 2006 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ist die frage denn zu ungenau formuliert? oder fehlen noch erläuterungen zum code? oder ist es im gegenteil zu viel code zum durchlesen?

es ist gar nicht so wichtig, den ganzen code zu durchschauen, mich würde nur
interessieren, ob da vielleicht irgend ne zeile drin ist, die möglicherweise tödlich für jedes netzwerk ist Question

könnte ja sein, so was...


kommt schon, wo sind die netzwerk-freaks unter euch Wink ? das muss doch ein klacks sein, mir meine fragen zu beantworten.

danke

AGU

pixelshooter

BeitragMo, Nov 20, 2006 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
1) benutz mal das Ding da (treff ich Wink ?)___________________________________________________________________________________________________________________________________|

2) Fals es zu lahm ist, teste mit ping und benutzte Notfalls tcptimeouts()
 

Donald Agu

BeitragMo, Nov 20, 2006 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry, aber was soll ich bitte benutzen? Sollte da ein link hin? Question

pixelshooter

BeitragMo, Nov 20, 2006 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ich meinte den Editbutton -.-
Egen dem Doppelpost^^. Gleich kriegst du wahrscheinlich (wie kürzt man das eigentlich ab?!) von nem Mod aufn deckel^^. Egal.
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragMo, Nov 20, 2006 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
petze! Wink

ne, aber mal im ernst: ich will hier wirklich niemanden nerven, aber ich habe das programmieren nun mal nicht erfunden, und mit tutorials und älteren threads komm ich bezüglich TCP net wirklich weit.

Kann mir denn niemand helfen?
Wäre echt super nett...

das mit den tcptimeouts sieht mir deiner formulierung nach zu urteilen auch stark nach der letzten Notlösung aus, damit kann ich irgendwie auch nicht so richtig glücklich werden... Crying or Very sad

HILFE!

pixelshooter

BeitragMo, Nov 20, 2006 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
war nich bös gemeint Wink . Teste doch mal die Zeit mit Ping
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragMo, Nov 20, 2006 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab die ping-zeit getestet, die ist ordnungsgemäß (wie ichs mir schon dachte) < 1ms.

Als ich es gerade getestet habe, ging beim einen spieler alles optimal, aber bei dem, der zuerst fertig war, hing er an der stelle wo das mit dem "Gegner nimmt noch einstellungen vor...bitte warten..." steht.

bringt uns das vielleicht näher an die problemlösung? Question

pixelshooter

BeitragDi, Nov 21, 2006 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
hm... mach mal ein gaaaanz einfaches netz-prog zum testen
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragDi, Nov 21, 2006 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich doch schon gemacht, ich mach nicht 2 schritte auf einmal. Wink

Siehe dazu meinen thread von letzter woche. Arrow

Das Netzwerk funktioniert, und wie gesagt, es funktioniert auch irgendwie, aber es hängt sich halt immer bei einem spieler auf, und ich will wissen wieso.
HILFE! Question Question

Jan_

Ehemaliger Admin

BeitragDi, Nov 21, 2006 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hast du WLAN?
between angels and insects

pixelshooter

BeitragDi, Nov 21, 2006 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hm... aber deine Frage mit den Millisecs(): Ist im Netz nich gleich, denn es gibt die zeit nach windowsstart zurück.
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragDi, Nov 21, 2006 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
@Jan: nein, ich verwende ein ganz normales netzwerkkabel (crossoverkabel)

@pixelshooter: ja, das dachte ich mir auch schon irgendwie, da ich das ja gewusst hab, aber wenn ich an beiden rechnern die gleichen einstellungen tätige, ist das programm (mit seinen zufallszahlen) identisch, und es war an 2 PCs... Question

pixelshooter

BeitragDi, Nov 21, 2006 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
alles sehr komisch bei dir Razz
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragDi, Nov 21, 2006 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, sehr komisch, und das tollste ist, dass sich jetzt sowieso kein mensch mehr den ganzen thread durchlesen will, weil er inzwischen ergebnislos übelst lang geworden ist... Crying or Very sad

ich flehe euch an, ihr meister der programmierkunst, lasst doch bitte meiner wenigkeit einen kleinen teil eures wissens auf mich herabscheinen!
vielleicht bestätigt ihr ja auch nur meine vermutung, dass in meinem code eine für jedes netzwerk tödliche zeile oder gar schleife drinsteckt...

ihr dürft dann nachher auch alle mitspielen Wink

pixelshooter

BeitragDi, Nov 21, 2006 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, ich würd dir ja gern helfen wenn ich könnte. Ich hab aber nur einen PC. Probier doch mal einen der diversen chats hier im Forum. Normalerweise gehen die ja.
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

Donald Agu

BeitragMi, Nov 22, 2006 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm... da in dem chat waren voll komische menschen... die haben die ganze zeit von so komischen sachen wie "Stück Fleisch", Ratten ,Stöcken und Kontaktlinsen geredet und waren nichr aus ihrer andacht herauszureißen.

Aber trotzdem danke für den tipp, ich werds wieder probieren...außer da sind nur menschenfresser drin Wink

Aber wenn jemand ne lösung für mein problem weiß und sie gleich hier rein schreibt, dann mach ich nen freudentanz Very Happy

- danke -

Jolinah

BeitragDo, Nov 23, 2006 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Welche Ports benutzen die Programme? Vielleicht kommt diese Windows-Meldung mit dem Netzwerkkabel weil du Ports benutzt die zum Windows-Netzwerk gehören.

Andererseits habe ich festgestellt dass du 3 mal "teamgamestats" sendest, aber beim Auslesen nur einen ausliest. Das Programm welches sendet könnte also an dieser Stelle hängen bleiben. Generell empfiehlt es sich in der Hauptschleife immer wenn Daten vorhanden sind etwas auszulesen, wenn unbekannte Daten ankommen ignoriert man die dann einfach. Dadurch kann das Sendeprogramm nicht hängen bleiben.

Bsp:
Code: [AUSKLAPPEN]

Repeat
Cls

  If ReadAvail(stream) > 0
    msg_type = ReadByte(stream)

    Select msg_type
      Case 1 ;Update von Int-Variable
        var$ = ReadString(stream)
        value = ReadInt(stream)
        If var = "a" then a = value
        If var = "b" then b = value
        ...

      Case 2 ;Chat
        from = ReadInt(stream)
        txt$ = ReadString(stream)
        Print "Chat von " + GetPlayerName(from) + ": " + txt

      Default ;Alles andere unbekannte überspringen/überlesen
        While ReadAvail(stream) > 0
          ReadByte(stream)
        Wend

    End Select
  Endif

Flip
Until Keyhit(1)


Ansonsten weiss ich auch nicht woran es liegen könnte Wink

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group