Page 1 sur 1

Plusieurs serveurs dans la meme appli

Publié : dim. 06/janv./2008 12:06
par Twix
Salut,

J'aimerai beaucoup pouvoir ouvrir plusieurs serveurs (sur des ports differents) dans le meme programme (en purebasic, evidemment) mais je n'y arrive pas. Je sui donc sorti de mon application et j'ai fai un test pour vraiment savoir ce qui ne marche pas.
J'ai codé deux programmes, 1 qui créé deux serveurs et attend les evenement, l'otre qui se connecte aux deux serveurs a la fois et lui envoi des messages. apparement le clien arrive a se connecter aux deux serveurs et le serveur s'en rend compte, mais un seul des deux serveurs arrive à recevoir des données.

Voila le code source serveur

Code : Tout sélectionner

; compilez d'abord ce code avec le debbugger activé
; pui compilez le client (et non pa l'inverse...)

InitNetwork()

; buffer pour recevoir les donées
*buffer=AllocateMemory(500)

; création des serveurs
CreateNetworkServer(1,23)
CreateNetworkServer(2,80)

; boucle principale
Repeat

; test evenements
nse=NetworkServerEvent()

If nse<>0

; keskicepasse ?
  Debug nse
  Debug EventServer()

; si c des données, on doi les recevoir sinon purebasic continue a dire qu'il y des données en attente (logique)
  If nse=2
    client=EventClient()
    ReceiveNetworkData(client,*buffer,500)
  EndIf

; on apelle le debugger pour faire le point et pour que ça n'aille pa trop vite...
  CallDebugger
  nse=0
EndIf

; delay CPU
Delay(50)

ForEver
Et le client

Code : Tout sélectionner

InitNetwork()

; on se connecte aux deux serveurs
id1=OpenNetworkConnection("localhost",23)
id2=OpenNetworkConnection("localhost",80)

; ça marche ?
Debug id1
Debug id2

; on envoi des données
SendNetworkString(id1,"Are you working ?")
SendNetworkString(id2,"No, I'm not")

Delay(500) ; on attend avant de fermer car les connexions se ferment avec le programme et le serveur pourrai ne pas
; recevoir le dernier packet de données si la connexion se ferme avant...
Est-ce que chez vous vous arriver à recevoir les données sur les deux serveurs ??
Sinon, qu'est-ce qui qui ferai que ce code ne fonctionne pas ?
J'ai essayé aussi pare-feu éteint, ça ne marche pa mieu.

Note : ça n'a aucun rapport vu que cela reste en local, mai j'ai une livebox...au ca ou

Merci d'avance pour vos réponses, car ce truc me bloque

Publié : dim. 06/janv./2008 13:27
par case
non je n'y arrive pas ...
etrange


le plus etrange c'est que j'ai modifier les programmes

coté serveurs

Code : Tout sélectionner

InitNetwork()

; buffer pour recevoir les donées
*buffer=AllocateMemory(500)

; création des serveurs
CreateNetworkServer(1,230)
CreateNetworkServer(2,80)
; boucle principale
Repeat
	Select NetworkServerEvent()
	Case 0
	Case #PB_NetworkEvent_Connect 
		Debug "connexion client"
		Debug EventServer()
	Case #PB_NetworkEvent_Data
		Debug "data"
		Debug EventServer()
	    client=EventClient()
   		ReceiveNetworkData(client,*buffer,500) 
	Case #PB_NetworkEvent_File
		Debug "file"
	Case #PB_NetworkEvent_Disconnect
		Debug "déconnexion "
		Debug EventServer()
	EndSelect
Delay(50)
ForEver 
coté client

Code : Tout sélectionner

InitNetwork()

; on se connecte aux deux serveurs
id1=OpenNetworkConnection("127.0.0.1",230)
SendNetworkString(id1,"Are you working ?")
CloseNetworkConnection(id1)
Delay(500)
id2=OpenNetworkConnection("127.0.0.1",80)
SendNetworkString(id2,"No, I'm not")
CloseNetworkConnection(id2)
Delay(500) ; on attend avant de fermer car les connexions se ferment avec le programme et le serveur pourrai ne pas
; recevoir le dernier packet de données si la connexion se ferme avant...



j'obtiens
connexion client
1
data
1
déconnexion
1
connection client
2
donc du coté serveur il y a bien deux serveurs qui tournent
il accepte la connexion sur le serveur 1, reçois les données sur le serveur 1 vois la fin de la connexion sur le serveur 1

détecte la connexion sur le serveur 2

puis plus rien !!!
bref il y a semble t-il un souci du coté de pure basic

Publié : dim. 06/janv./2008 13:30
par Twix
faut peut etre classer ça dans les bugs alors...
jsui encore dans la version 4.10, j'ai pa tenté ac la beta 4.2 mai ça doi etre pareil, ya pa de modifs dans la lib de network à ce que j'ai vu...

Publié : dim. 06/janv./2008 13:57
par case
problème déjà remonté sur le forum anglais

http://www.purebasic.fr/english/viewtopic.php?t=29699

Publié : dim. 06/janv./2008 14:23
par Twix
ok merci bcp case
j'espere keu ça sera corrigé...

bonne année a tous ceux qui lisent ce topic :D