login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Socket Probleem

Offline SvenP - 17/06/2007 19:51
Avatar van SvenPPHP interesse Ik heb de code van de IRC bot tutorial gebruikt om de basis te leren van de werking van sockets
Ben al een eindje opweg.. Heb alleen 1 probleem met dit stukje:

  1. while($data = socket_read($socket,1024)) {
  2. if($data == "\n") continue;
  3.  
  4. $eData = explode(" ",$data);
  5. for($i = 0; isset($eData[$i]); $i++) {
  6. $eData[$i] = trim($eData[$i]);
  7. }
  8.  
  9. echo $data."\n";
  10. }


Dit is een oneindige while...
De pagina blijft dus laden zonder iets te laten zien

Ik heb in VB6 een servertje gemaakt.
Die krijgt wel data binnen die de php socket verstuurt.
alleen, als de server iets naar de php wil sturen.
hoe verwerk ik dat op een juiste manier?

10 antwoorden

Gesponsorde links
Offline W0etah - 17/06/2007 20:09 (laatste wijziging 17/06/2007 22:00)
Avatar van W0etah PHP beginner
  1. for($i = 0; isset($eData[$i]); $i++) {


dan moet je toch doen:
  1. for($i = 0; $i <=isset($eData[$i]); $i++) {

of
  1. for($i = 0; $i >= isset($eData[$i]); $i++) {

of
  1. for($i = 0; $i == isset($eData[$i]); $i++) {


Citaat:
Code Tags!


sorry!, ik dacht voor 1 regeltje kan het geen kwaad 
Offline ikkedikke - 18/06/2007 00:12
Avatar van ikkedikke PHP expert Woetah: dat is het probleem niet.
Sven:
Je zegt dat het script moet lezen tot het iets anders vindt dan een lege regel, dan pas ga je commando's uitvoeren.
Je moet dus gewoon ook als je een witregel ontvangt, de gelegenheid geven om output te sturen.
Offline smoos - 18/06/2007 09:49 (laatste wijziging 19/06/2007 19:20)
Avatar van smoos PHP gevorderde
  1. while($data = socket_read($socket,1024)) {


Bovenstaande kan niet want de port blijft wel open dus je kan blijven lezen. Als je alle informatie hebt gehad en je blijft vragen dan zal hij niets terug zeggen en blijft de connectie open hangen.

Ben je iets voor je zelf aan het schijven of in combinatie met een ander programma. Bij het laatste zal er vast wel een protocol bestaan waaraan je je moet houden. In het protocol staat wat de zender verstuurd om jou te vertellen dat je alle data hebt. Het POP3 protocol stuurt bv '\r\n.' om te vertellen dat je alle informatie hebt gehad. Als je dat krijgt moet je stoppen met uitlezen.

Citaat:
Code tags

Doe niet zo zielig

Citaat:
Gedraag je normaal volgens de regels die hier gelden.


Citaat:
# bij het plaatsen van een reactie

* plaats een reactie als je denkt een zinvolle bijdrage te kunnen leveren aan de discussie
* probeer ontopic te blijven - zinloze spam zal door onze bikkelharde medewerkers worden geneutraliseerd 
* probeer oplossingen toe te lichten (bijvoorbeeld door commentaar in code toe te voegen) - het is vaak interessanter om te zien hoe je tot een oplossing gekomen bent (of waarom je voor die oplossing gekozen hebt) dan het geven van enkel de oplossing zelf; het toelichten van oplossingen draagt bij aan het begrip

Ik hou me aan de regels, er staat nergens dat ik code tags moet gebruiken. Wees op zijn minst zo'n held om je naam (Marten) erbij te zetten.

Citaat:
Rens edit:
Stop met die edits waar je niks aan hebt?
Offline SvenP - 28/06/2007 23:02
Avatar van SvenP PHP interesse hmz..

Citaat:
Het POP3 protocol stuurt bv 'rn.' om te vertellen dat je alle informatie hebt gehad.


Ik moet niet stoppen met uitlezen denk ik, het word namelijk gebruikt voor een webbased spelletje die in een constante lus moet zitten om locaties van anderen te ontvangen en je eigen te verstuuren enzo....

of ik moet het uitlezen weer starten als er iets probeert binnen te komen op de desbetreffende poort ofzo..
Offline vinTage - 28/06/2007 23:09
Avatar van vinTage Nieuw lid
Citaat:
of ik moet het uitlezen weer starten als er iets probeert binnen te komen op de desbetreffende poort ofzo..


Dat zal tricky worden, want op die manier moet elke "speler(s) (duo)" zn/hun eigen poort krijgen 

Offline SvenP - 28/06/2007 23:17 (laatste wijziging 28/06/2007 23:17)
Avatar van SvenP PHP interesse nee, elke speler stuurt een string met als begin hun ID nummer als wat in de mysql database stuurt
de server is wel voor multiclient bestemd.

ik wil alleen weten hoe ik het tegen ga dat de pagina oneindig blijft laden en na 60 sec uitpleurt..

ik heb via GameLib (javascript/ajax) een loop, daar zou ik em graag in willen pleuren..
Offline Gerard - 29/06/2007 03:00
Avatar van Gerard Ouwe rakker
Citaat:
nee, elke speler stuurt een string met als begin hun ID nummer als wat in de mysql database stuurt
de server is wel voor multiclient bestemd.
Weet niet of je PHP socket wel meerdere verbindingen aankan op hetzelfde moment though.
Offline smoos - 29/06/2007 11:08
Avatar van smoos PHP gevorderde Wil je php als deamon laten spelen?
Offline SvenP - 29/06/2007 21:48 (laatste wijziging 29/06/2007 21:48)
Avatar van SvenP PHP interesse PHP socket is NIET de server, alleen client....
server maak ik met C#.NET 2005
Offline Koen - 30/06/2007 12:01
Avatar van Koen PHP expert @Smoos:
Citaat:
Ik hou me aan de regels, er staat nergens dat ik code tags moet gebruiken.

kijk dan maar eens op:
[URL=http://www.sitemasters.be/nieuwsartikels/398/Code_tags_zijn_verplicht_op_sitemasters]Dit nieuwsbericht.[/URL]
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.38s