Page 1 sur 1

Probleme de reception de données

Publié : mar. 19/févr./2008 19:16
par lepiaf31
Salut !

Bon depuis quelques temps j'essaye de communiquer avec un serveur web en utilisant des sockets. Tous marche bien sauf la reception des donnees. Je ne recois qu'une partie des donnees et pas toujours la meme quantitié. Voila le code que j'utilise:

Code : Tout sélectionner

Procedure.s ReceiveData(Connection)
  Datas.s = ""
  BufferSize = 1024
  *Buffer = AllocateMemory(BufferSize)
  Repeat
    Result = ReceiveNetworkData(Connection, *Buffer, BufferSize)
    Datas + PeekS(*Buffer)
  Until Result < BufferSize
  FreeMemory(*Buffer)
  ProcedureReturn Datas
EndProcedure

Procedure.s SendSocket(Host.s, Socket.s)
  Conn = OpenNetworkConnection(Host, 80)
  If Conn
    SendNetworkData(Conn, @Socket, Len(Socket))
    Delay(1)
    Result.s = ReceiveData(Conn)
    CloseNetworkConnection(Conn)
    ProcedureReturn Result
  Else
    ProcedureReturn ""
  EndIf
EndProcedure

InitNetwork()
Host.s = "www.equipagesurvivors.com"
Socket.s = "HEAD /index.php HTTP/1.1+Chr(10)+Host: www.equipagesurvivors.com+Chr(10)+Connection: Keep-Alive"
Result.s = SendSocket(Host, Socket)
Merci à ceux qui voudrons bien essayer de m'aider :)

Publié : mar. 19/févr./2008 20:49
par Anonyme
Ton serveur ne renvois rien.

Execute ce code avec le debug pour pouvoir le "killé"

Code : Tout sélectionner

InitNetwork()


Host.s = "www.equipagesurvivors.com"
Socket.s = "HEAD /index.php HTTP/1.1+Chr(10)+Host: www.equipagesurvivors.com+Chr(10)+Connection: Keep-Alive"


Conn = OpenNetworkConnection(Host, 80)
SendNetworkData(Conn, @Socket, Len(Socket))


Repeat

NetWorkEvent =  NetworkClientEvent(Conn) 


If NetWorkEvent=#PB_NetworkEvent_Data
Debug "Receive..."
 *Buffer = AllocateMemory(1024)
Debug ReceiveNetworkData(Conn, *Buffer, 1024)
EndIf 




ForEver

Appel cette fct° ReceiveNetworkData() uniquement si tu recois des données , ( regarde le code plus haut )

++

Publié : mar. 19/févr./2008 20:57
par lepiaf31
Je me suis trompé dans le code que je vous ai donné :? Il modifier ceci:

Code : Tout sélectionner

Socket.s = "HEAD /index.php HTTP/1.1"+Chr(10)+"Host: www.equipagesurvivors.com"+Chr(10)+"Connection: Keep-Alive"+Chr(10)+Chr(10)

Cpl.Bator ton code renvoi ca :

Code : Tout sélectionner

Receive...
456
et l'executable ne s'arrete pas.

Publié : mer. 20/févr./2008 12:02
par Anonyme
Avec l'EOL sa marche , c'est censé te renvoyé quoi mis a part sa :
HTTP/1.1 200 OK
Date: Wed, 20 Feb 2008 11:01:02 GMT
Server: Apache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
X-Powered-By: PHP/4.4.8
Set-Cookie: PHPSESSID=6f9c44a253ac38a915a167ad7dea9ffa; path=/
Set-Cookie: PHPSESSID=8ab37ea3b5a0251177fac815fe88407a; path=/
Vary: Host
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

et l'executable ne s'arrete pas.
Execute ce code avec le debug pour pouvoir le "killé"
:wink:

Publié : mer. 20/févr./2008 12:21
par lepiaf31
Bon en fait jme suis encore planté (pour changer) la vrai requete c'est ca :

Code : Tout sélectionner

Socket.s = "GET /index.php HTTP/1.1"+Chr(10)+"Host: www.equipagesurvivors.com"+Chr(10)+"Connection: Keep-Alive"+Chr(10)+Chr(10)
(il faut envoyer une requete GET au lieu de HEAD).
Normalement je dois recevoir le code source entier de la page, or je n'ai le code source qu'en partie.

Cpl.Bator, en executant ton code avec la bonne requete cette fois, j'obtient ceci:
Receive...
1024
Receive...
436
Receive...
1024
Receive...
436
Receive...
1024
Receive...
436
Receive...
1024
Receive...
436
Receive...
1024
Receive...
436
Receive...
1024
Receive...
436
Receive...
1024
Receive...
436
Receive...
1024
Receive...
436
Receive...
490

Publié : mer. 20/févr./2008 12:29
par Anonyme

Code : Tout sélectionner

HTTP/1.1 200 OK
Date: Wed, 20 Feb 2008 11:28:00 GMT
Server: Apache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
X-Powered-By: PHP/4.4.8
Set-Cookie: PHPSESSID=34c8a7f7927319af22cf5bfaa32f54e4; path=/
Set-Cookie: PHPSESSID=e1102d08eff33291ddcd73338baaa002; path=/
Vary: Host
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

ec3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Language" content="fr"/>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>

<title>Survivors à vous de jouer !</title>
<link href="scode/scode.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="scode/scode.js"></script>

<meta name="description" xml:lang="fr" content="Les pirates ®

Publié : mer. 20/févr./2008 13:25
par lepiaf31
Merci ce code marche tres bien :)
Mais j'aimerais arreter la boucle lorsque toutes les donnees ont été recues mais je ne sais pas comment faire

Publié : mer. 20/févr./2008 16:36
par Progi1984
Regarde du côté de Break

Publié : mer. 20/févr./2008 18:22
par lepiaf31
C'est bon j'ai réussi ^^
Mais j'ai un autre probleme: des caracteres s'incrustent dans le code source renvoyé et je ne sais pas à quoi ils correspondent ni pourquoi ils sont placés à tel ou tel endroit: on en voit quelques uns dans le code qu'à récupérer Cpl.Bator (en rouge):

[quote]HTTP/1.1 200 OK
Date: Wed, 20 Feb 2008 11:28:00 GMT
Server: Apache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
X-Powered-By: PHP/4.4.8
Set-Cookie: PHPSESSID=34c8a7f7927319af22cf5bfaa32f54e4; path=/
Set-Cookie: PHPSESSID=e1102d08eff33291ddcd73338baaa002; path=/
Vary: Host
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

ec3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Language" content="fr"/>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>

<title>Survivors à vous de jouer !</title>
<link href="scode/scode.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="scode/scode.js"></script>

<meta name="description" xml:lang="fr" content="Les pirates ®

Publié : ven. 22/févr./2008 20:05
par lepiaf31
Alors personne ne sait ?