Serveur sur un serveur dédié

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
karclopfr
Messages : 8
Inscription : dim. 05/mars/2006 11:03

Serveur sur un serveur dédié

Message par karclopfr »

Bonjour,

J' ai réussi à mettre mon serveur ( qui permet de jouer aux echecs ) sur mon serveur dédié.
Hier il s' est arrété sans explications et je ne vois de bug, vous pouvez m' aider ?

Chaque "client" envoi des strings avec le caractère "ÿ" à la fin et le serveur transmet ces strings avec le même caractère à la fin ( pour indiquer la fin du string ).

Voici le code source compilé avec linux 3.94 :

Code : Tout sélectionner

InitNetwork()
Dim id(250)
Dim qui.s(250)
Dim tampon.s(250)
Global Port, globatt.s
Port=6697
; Structure de l' envoi : 0 ou 1,pseudo a qui envoyer,chr(253),message,ÿ
; 0 pour enregistrement d' un nouveau pseudo ( message vide )
; 1 pour l' envoi d' un message
; si pseudo="$" alors envoi à tous


tdirect.l=0 : ecoute=1000
CreateNetworkServer(Port)
Repeat
  Delay(1)
  t.l=ElapsedMilliseconds()
  If (t-tdirect)>6000000
    tdirect=t
  EndIf
  res.s=""
  SEvent = NetworkServerEvent()
  q=0
  If SEvent
    Buffer=AllocateMemory(1000)
    CurrentID = NetworkClientID()
    ClientID=CurrentID
    Select SEvent 
      Case 1
        k=0
        While k<200 And id(k)<>0
          k=k+1
        Wend
        id(k)=ClientID
      Case 2
        k=0
        While k<200 And id(k)<>ClientID
          k=k+1
        Wend
        If k=200
          k=0
          While k<200 And id(k)<>0
            k=k+1
          Wend
          id(k)=ClientID
        EndIf
        res.s=tampon(k)
        ReceiveNetworkData(ClientID, Buffer, 1000)
        res=res+PeekS(Buffer)
        ind=k
tampon(ind)=res
While FindString(tampon(ind),"ÿ",1)<>0
    x=FindString(tampon(ind),"ÿ",1)
    res=Left(tampon(ind),x)
    tampon(ind)=Right(tampon(ind),Len(tampon(ind))-x)
  c.s=res
  ap.s=Left(c,1)
  c=Right(c,Len(c)-1)
  x=FindString(c,Chr(253),0)
  bp.s=Left(c,x-1)
  c=Right(c,Len(c)-x)
  cp.s=Left(c,Len(c)-1)
  ;ap 0 ou 1
  ;bp pseudo
  ;cp message
  ;ind identifiant dans la table
  If ap="0"
    For i=0 To 200
      If qui(i)=bp
        SendNetworkString(id(i),"wTÿ")
        qui(i)="" : id(i)=0 : tampon(i)=""
      EndIf
    Next
    qui(ind)=bp
    If bp="|log"
      ecoute=ind
    EndIf
    If ecoute<>1000
      SendNetworkString(id(ecoute),"k="+Str(ind)+" "+qui(ind)+" j o i nÿ")
    EndIf
  EndIf
  If ap="1"
    If bp="$"
      k=0
      While k<200
        If qui(k)<>"" And k<>ecoute
          SendNetworkString(id(k),cp+"ÿ")
        EndIf
      k=k+1
    Wend
    If ecoute<>1000
      SendNetworkString(id(ecoute),qui(ind)+":Tous  "+cp+"ÿ")
    EndIf
    
    Else
      k=0
      While qui(k)<>bp And k<200
        k=k+1
      Wend
      If k<200
        SendNetworkString(id(k),cp+"ÿ")
        If ecoute<>1000
          SendNetworkString(id(ecoute),qui(ind)+":"+bp+"  "+cp+"ÿ")
        EndIf
      EndIf
    EndIf
  EndIf
  If ap="2"
    If ecoute<>1000
      SendNetworkString(id(ecoute),qui(ind)+" QUITÿ")
    EndIf
    id(ind)=0 : qui(ind)="" : tampon(ind)=""
    If ind=ecoute
      ecoute=1000
    EndIf
    If ecoute<>1000
      SendNetworkString(id(ecoute),qui(ind)+" Q U I Tÿ")
    EndIf
    
  EndIf
Wend
      Case 4
        k=0
        While id(k)<>ClientID And k<200
          k=k+1
        Wend
        If k<200
          id(k)=0 : tampon(k)="" : qui(k)=""
        EndIf
    EndSelect
    FreeMemory(Buffer)
  Else
  Delay(20)
EndIf

ForEver