php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.01.2012, 11:11  
Neuer Benutzer
 
Registriert seit: 05.01.2012
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
Meathor befindet sich auf einem aufstrebenden Ast
Standard socket_read liefert NULL oder Endlosschleife

Hallo erstmal, ich habe meine Umschulung zum FIAE im Jahr 2008 abgeschlossen, seit dem Arbeite ich überwiegend an Privaten Projekten. Weshalb ich mich eigentlich zu den Fortgeschrittenen zähle und nicht verstehe warum im "Fortgeschrittenen" Forum nur Profis Posten dürfen. Aber nun zum Problem.

Zum Script:

Das script schickt eine anfrage an einen Server, dort wird die anfrage entgegen genommen verarbeitet und eine Antwort zurück geschickt. Dies Soll dan von PHP empfangen und ausgegeben werden.

Zur zeit laufen Server und script auf dem gleichen Root. Dies ist allerdings nur zur Zeit so. Später wird der Server auf einen anderen Root verschoben, so das ich die IP ermitteln lasse um zu connecten.

Problem:

PHP Connected zum Server und sendet auch den Befehl ab, dieser wird verarbeitet und dann wird auch die Antwort verschickt. Da nur eine einzige Zeile verschickt wird, Wollte ich mir die Schleife für socket_read() sparen.

Nun gibt socket_read nicht die Antwort des Servers wieder. Die var, die ich füllen lassen will ist mit NULL belegt, so das ich das ergebniss erst mit var_dump() ausgelesen hab.

Ich schlage mich mit diesem Problem nun schon seit 3 Tagen rum, und finde keine Lösung.

Per schleife socket_read() zu durchlaufen sorgt für eine Endlosschleife. Während dieser Endlosschleife wartet der Server vergeblich auf das Senden des Kommandos von PHP.

hier das derzeitige script:

PHP-Code:
$text "isbanned:" $_REQUEST['user'];

$address =  gethostbyname("min********");
$port 13**;

if((
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP)) === false) {
      echo 
"<br/><span style='color:red;font-weight:bold;'>ERROR!</span> socket_create() fehlgeschlagen. Grund: " socket_strerror(socket_last_error());

else {
      echo 
"<br/>socket_create()... <span style='color:green;font-weight:bold;'>OK</span>";
}

if (
socket_connect($socket$address$port) === false) {
      echo 
"<br/><span style='color:red;font-weight:bold;'>ERROR</span> socket_connect(socket,$address,$port) fehlgeschlagen. Grund: " socket_strerror(socket_last_error($socket));

else {
      echo 
"<br/>socket_connect()... <span style='color:green;font-weight:bold;'>OK</span>";
}

$len strlen($text);
if(
socket_write($socket$text) === false) {
      echo 
"<br/><span style='color:red;font-weight:bold;'>ERROR</span> socket_write() fehlgeschlagen. Grund: " socket_strerror(socket_last_error($socket));

else {
      echo 
"<br/>socket_write()... <span style='color:green;font-weight:bold;'>OK : ".socket_strerror(socket_last_error($socket))."</span>";
}

if ((
$line socket_read($socketMAXLINE,PHP_NORMAL_READ)) === false) {
    echo 
"<br/><span style='color:red;font-weight:bold;'>ERROR</span> socket_read() fehlgeschlagen. Grund: " socket_strerror(socket_last_error($socket));
}
else {
    echo 
"<br/>socket_read()... <span style='color:green;font-weight:bold;'>" socket_strerror(socket_last_error($socket)) . ' DATA: ';
    
var_dump($line);
    echo 
"</span>";
}

socket_close($socket); 
hier die Ausgabe im Browser:

Zitat:
socket_create()... OK
socket_connect()... OK
socket_write()... OK : Success
socket_read()... Success DATA: NULL
und hier die Verbose-ausgabe des Servers in der shell:

Code:
[INFO] Client accepted.
[INFO] ServerClient object created.
[INFO] Got client stream.
[INFO] Linked streamreader to client stream.
[INFO] Linked streamwriter to client stream.
[INFO] Created client ip end point.
[INFO] Client ip is 1*****5
[INFO] Added client to list.
[INFO] Created client thread.
[INFO] Set thread properties.
[INFO] Started client thread. Listening to client commands ...
[INFO] Client connected: '1******5'
[INFO] Received isbanned command.
[INFO] Checking username: 'meathor'
[INFO] Access granted: 'meathor'
[INFO] Client disconnected: '1******5'
Hat jemand ne Idee warum das net läuft?

mfg

Geändert von Meathor (05.01.2012 um 11:36 Uhr). Grund: Mal den Code nen bissl lesbarer gemacht
Meathor ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.01.2012, 11:45  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Da wir die Serversoftware nicht kennen, ist eine Hilfestellung schwierig bis unmöglich.

Dein Serverlog sieht jedenfalls nicht danach aus als hätte dein Server jemals irgendwas gesendet. Jedenfalls sehe ich zum "Receiving" kein gegenübergestelltes "Sending" oder Ähnliches.

Wie sieht der ServerLog denn bei einer bereits bestehenden, funktionierenden, Client Anwendung aus?
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 05.01.2012, 12:14  
Neuer Benutzer
 
Registriert seit: 05.01.2012
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
Meathor befindet sich auf einem aufstrebenden Ast
Standard

Der Server Kommuniziert auf die gleiche weise mit einen in JAVA geschriebenen Plugin eines Multiplayerspieles. Da das Plugin und Server Problemlos Kommunizieren können, gehe ich davon aus, das auch die Daten gesendet und empfangen werden. Ich werde bezüglich des logs und des Sending den Serverbetreiber befragen.

Kann ich davon ausgehen, das der Code also keinen Fehler enthält und der Fehler woanders liegt?
Meathor ist offline   Mit Zitat antworten
Alt 05.01.2012, 13:05  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von Meathor Beitrag anzeigen
Kann ich davon ausgehen, das der Code also keinen Fehler enthält und der Fehler woanders liegt?
Zumindest keinen offensichtlichen.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 05.01.2012, 19:16  
Neuer Benutzer
 
Registriert seit: 05.01.2012
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
Meathor befindet sich auf einem aufstrebenden Ast
Standard

Nach Rücksprache mit dem owner sendet der server zusammen mit dieser nachricht:

Code:
[INFO] Access granted: 'meathor'
Der Owner vermutet, das PHP zu früh (also die Antwort ist noch gar nicht da) den socket ausliest und somit die Antwort gar nicht mehr erhält.
Meathor ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Ajax - Session Problem halskrause PHP Tipps 2009 10 12.01.2010 02:27
[Erledigt] Problem mit Mehrsprachigkeit Sniper_Kotaro PHP Tipps 2009 2 16.12.2009 11:47
Problem beim Download Management mistermint PHP Tipps 2009 8 24.10.2009 11:34
Umlaut Problem nokieone PHP Tipps 2009 7 16.10.2009 19:30
Problem mit Basedir in PhP cmuch05 Datenbanken 9 08.01.2009 14:17
[Erledigt] Problem: PHP Selbe Datei mehr als 1 Mal soulan PHP Tipps 2008 13 28.11.2008 22:51
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 13:12
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 12:19
Problem mit swfobjects R4v3r JavaScript, Ajax und mehr 8 21.09.2008 14:17
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum