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