amiga-news 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:
CONST FIONREAD&=&H4004667F
 size&=0
 junk=IoctlSocket(fd&,FIONREAD&,VARPTR(size&))

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? :)

--
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? :lach:
--
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.
.