[PHP WinXP] Sockets werken niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • SH4D3H
  • Registratie: Juni 2004
  • Laatst online: 27-02 23:46
Opstelling
Ik heb een Apache 2 + PHP 5.0.3 server geconfigureerd op m'n Windows PC'tje.
Nu heb ik een IRCbot classje geschreven dat gebruikt maakt van 'socket' functies die daarbij dus php_sockets.dll nodig hebben. Die wordt dan ook netjes geladen.

Probleem
Maar als ik de bot dan run gebeurt er niets, niet in de browser en niet in CLI mode.
De browser zegt netjes 'done' ipv dat deze blijft laden in de loop.

Ligt het niet aan het script?
Nee!
Zowel op Redhat 9 met Apache 1.3x & php 4.3x als op Slackware met Apache 2.0x & php 5.0.3 werkt m'n script vlekkeloos.

Oplossing
Het is niet een echte oplossing, maar met fsockopen() lukt het, zij het minder goed, ook.
Maar dat is het punt dus niet ;)
Toen moest ik denken aan NAT (lees: port forwarding), dus ook dat geprobeerd, ook zonder succes.

Vragen
Hoe krijg ik sockets werkend in Windows?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dat iets werkt in Linux wil niet zeggen dat het niet aan je code kan liggen. Zo zijn er bepaalde functies die in Windows absoluut niet werken zoals ze in Linux werken. Laat eens wat relevante code zien. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
De enige keren dat ik met sockets ism PHP heb gewerkt, was het met fsockopen(), fputs(), etc.

Andere ietwat negetive ervaringen ik heb het sockets op Windows 2000 en XP is dat het schrijven naar je COM poorten (wij moesten een microcontroller aansturen) standaard wordt geblokkeerd, daar zijn workarounds voor te vinden op internet. Misschien is dat wel het gene waarom het bij jouw niet werkt.

[ Voor 9% gewijzigd door Sybr_E-N op 20-01-2005 20:25 ]


Acties:
  • 0 Henk 'm!

  • Tys
  • Registratie: Januari 2003
  • Laatst online: 19:34

Tys

Sybr_E-N schreef op donderdag 20 januari 2005 @ 20:24:
De enige keren dat ik met sockets ism PHP heb gewerkt, was het met fsockopen(), fputs(), etc.

Andere ietwat negetive ervaringen ik heb het sockets op Windows 2000 en XP is dat het schrijven naar je COM poorten (wij moesten een microcontroller aansturen) standaard wordt geblokkeerd, daar zijn workarounds voor te vinden op internet. Misschien is dat wel het gene waarom het bij jouw niet werkt.
Ik gok dat dat TS niet via com poorten werkt.
Overigens ondervind ik hier geen probleem met een simpel irc connect via een socket, alleen ik heb dan wel een andere opstelling (apache 1.3.31 / php4.3.9 (jaja, moet updaten)).

Je connect code posten zou handig zijn.

[ Voor 3% gewijzigd door Tys op 20-01-2005 20:29 ]

My flight statistics: (444.803km in 120 flights) Next trips: Rome (Italy)


Acties:
  • 0 Henk 'm!

  • SH4D3H
  • Registratie: Juni 2004
  • Laatst online: 27-02 23:46
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
# Connecten hier
$socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
socket_bind( $socket, '192.168.1.35' );
socket_connect( $socket, 'irc.quakenet.org', 6667 );

# Hier aanmelden (blaat = USER + NICK gedoe)
socket_write( $socket, 'blaat' );

# Loopje om connectie te houden
while( $data = socket_read( $socket, 65000 , PHP_NORMAL_READ ) )
{
   # Data = 'leeg', volgende loop
   if( $data == '\n') continue;

   # Kanaal joinen en pingen etc etc ...
}
?>


Edit: Dan plaats ik de code en dan weten ze het niet meer :+

[ Voor 37% gewijzigd door SH4D3H op 20-01-2005 20:50 ]


Acties:
  • 0 Henk 'm!

  • SH4D3H
  • Registratie: Juni 2004
  • Laatst online: 27-02 23:46
[..] Hier stond een quote, nu niet meer :+ [...]
Edit:
Zonder code waren er zat replies, zal ik de code maar weer weghalen? :x

[ Voor 77% gewijzigd door SH4D3H op 20-01-2005 21:22 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

SH4D3H schreef op donderdag 20 januari 2005 @ 21:21:
Zonder code waren er zat replies, zal ik de code maar weer weghalen? :x
offtopic:
Geduld hebben lijkt me ook een optie. :X


Ik zie niets vreemds aan je code, die zou moeten werken. Weet je zeker dat je browser niet gewoon stopt omdat hij te lang moet wachten op input? En wat is er eigenlijk op tegen om fsockopen te gebruiken?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • SH4D3H
  • Registratie: Juni 2004
  • Laatst online: 27-02 23:46
Ik heb zojuist een boeiend ontdekking gedaan:
Warning: socket_read() [function.socket-read]: unable to read from socket [0]: De bewerking is voltooid.

Dit is de fout, maar het lukt me niet um op te lossen :(
Ik zie niets vreemds aan je code, die zou moeten werken. Weet je zeker dat je browser niet gewoon stopt omdat hij te lang moet wachten op input?
Nee.
En wat is er eigenlijk op tegen om fsockopen te gebruiken?
De verbinding blijft dan niet lekker open, dat heb ik namelijk al geprobeerd.
En met sockets heb je meer vrijheid :)

Conclusie
Het is een Windhoos bug uit PHP 4.3.x, raar dat PHP5 deze ook nog altijd heeft.
Vandaar dat ie op Linux wel werkt :)

Nu heb ik hem ook aan de gang met sockets :D

[ Voor 61% gewijzigd door SH4D3H op 21-01-2005 00:30 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1