ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > tcp -> richtige Programmierung | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
1 -2- | [ - Beitrag schreiben - ] |
10.02.2008, 15:16 Uhr Ralf27 Posts: 2779 Nutzer |
Jup, jetzt geht es damit. Jetzt gibt es noch mehr Bugs zu finden. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
10.02.2008, 18:25 Uhr Ralf27 Posts: 2779 Nutzer |
Es geht zwar, ist aber irgendwie alles langsamer... hm, seltsam. Mit TCP: war es schneller. Naja, ist bestimmt wieder ein Bug von mir. ich hab auch den Netzwerkmodus lange nicht mehr getestet. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
12.02.2008, 21:30 Uhr Ralf27 Posts: 2779 Nutzer |
Leuts, die bsdsocket hab ich noch nicht so ganz im Griff: Der Client konnte ich enblocken, der läuft wunderbar. Wenn recv keine Daten hat, dann blockt der auch nicht. Der Server entbocke ich genau so, aber er hält bei recv an wenn keine Daten da sind. Wie kann das sein? Beim Server hab ich ja zwei Sockets. Einmal ganz am Anfang und dann der ankomende Socket. Und denn entblocke ich. Jetzt auch testweise beide. Genau daran hängt es. Wenn das geht, kann ich denn rest einbauen. So, jetzt erst mal denn Code zum Server der nicht will: code:... IF go=1 THEN fd&=Socket&(PF_INET%,SOCK_STREAM%,0) IF fd&=-1 THEN Fehler=Fehler_NetzwerkVerbindung ELSE address%(0)=AF_INET% address%(1)=VAL(Port$):REM Port address%(2)=0 :REM 0.0... address%(3)=0 :REM ...0.0 IF bind(fd&,VARPTR(address%(0)),16)THEN Fehler=Fehler_NetzwerkVerbindung ELSE IF listen(fd&,3)=-1 THEN Fehler=Fehler_NetzwerkVerbindung ELSE a&=VARPTR(address%(0)) fd2&=accept&(fd&,a&,16) IF fd2&=-1 THEN Fehler=Fehler_NetzwerkVerbindung ELSE tcp_game&=fd2& tcp_go=1 LeseNetzwerk a$,6 IF a$<>"SUDOKU"THEN Fehler=Fehler_NetzwerkVerbindung ELSE LeseNetzwerk a$,1 IF a$<>"1"THEN Fehler=Fehler_NetzwerkFormat SchreibeNetzwerk CHR$(255) ELSE REM Alles ok, jetzt gehts los! SchreibeNetzwerk CHR$(254) LocMeldung Meldung_Netzwerk a&=1:junk=IoctlSocket(fd&,FIONBIO&,VARPTR(a&)) END IF END IF END IF END IF END IF END IF END IF ... IF Fehler THEN LocMeldung Fehler GOSUB NetzwerkEnde ELSE tcp_buffer&=AllocVec&(tcp_bufferl&,MEMF_PUBLIC&) IF tcp_buffer&=0 THEN LocMeldung Fehler_Netzbuffer GOSUB NetzwerkEnde ELSE Vorhanden=0 ZeigeGFX 1 END IF a&=1:junk=IoctlSocket(tcpgame&,FIONBIO&,VARPTR(a&)) END IF StatusNetzwerk ... Ja, ist noch nicht ganz "reif"... SchreibeNetzwerk und LeseNetzwerk sind recv() und send() mit etwas Kontrollierbeiwerk. Das geht ja. Aber das entblocken beim Server. Das gleich geht aber beim Client... EDIT: Beide(Server und beim Client) IoctlSocket() liefern als Rückgabewert eine NULL, also keinen Fehler. -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 12.02.2008 um 21:34 Uhr geändert. ] [ Dieser Beitrag wurde von Ralf27 am 12.02.2008 um 22:09 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
12.02.2008, 22:28 Uhr Ralf27 Posts: 2779 Nutzer |
Hab eben eine andere Lösung gefunden die auch läuft, ohne das ich entblocken muß: IOCtlSocket() liefert mit code:in Size die Anzahl der Bytes die gelesen werden können. Wenn bei Size eine Null steht, dann les ich einfach nicht und gut ist. Was haltet ihr denn davon?CONST FIONREAD&=&H4004667F size&=0 junk=IoctlSocket(fd&,FIONREAD&,VARPTR(size&)) -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
16.02.2008, 19:48 Uhr Ralf27 Posts: 2779 Nutzer |
Liest hier noch jemand diesen Thread mit? -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
1 -2- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > tcp -> richtige Programmierung | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |