Faustino Posted October 20, 2020 at 03:11 PM Report Share #619606 Posted October 20, 2020 at 03:11 PM Boas! Estou a tentar criar um socket (mais simples possivel) em php. Foi me dado este código: <?php $socket_servidor=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); socket_bind($socket_servidor,'10.1.18.208',9300); socket_listen($socket_servidor,2); socket_accept($socket_servidor); $msg="Mensagem via Socket!\n"; socket_write($msgsock,$msg,strlen($msg)); $buf=socket_read($socket_servidor,2048,PHP_NORMAL_READ); socket_shutdown($socket_servidor,2); socket_close($socket_servidor); ?> Sendo este código apenas para o servidor. Mas dá me o seguinte erro: Fatal error: Uncaught Error: Call to undefined function socket_create() in C:\xampp\htdocs\sockservr.php:2 Stack trace: #0 {main} thrown in C:\xampp\htdocs\sockservr.php on line 2 Link to comment Share on other sites More sharing options...
M6 Posted October 20, 2020 at 04:54 PM Report Share #619607 Posted October 20, 2020 at 04:54 PM Tens de instalar e/ou ativar a extensão de sockets do PHP. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
washalbano Posted October 20, 2020 at 04:55 PM Report Share #619608 Posted October 20, 2020 at 04:55 PM (edited) Olá! De acordo com https://www.php.net/manual/en/function.socket-create.php a função socket_create só está disponível a partir do php 4.1 Certifique-se da versão do php que está usando Vá ao php.ini e retire o ponto e vírgula em: ;extension=sockets Edited October 20, 2020 at 04:56 PM by washalbano Link to comment Share on other sites More sharing options...
Faustino Posted October 21, 2020 at 04:08 PM Author Report Share #619625 Posted October 21, 2020 at 04:08 PM Obrigado já está a funcionar! Mas agora que executei ambos os ficheiros dos sockets (cliente e servidor), dão me os seguintes erros: Servidor: C:\xampp\php>php -q sockservr.php PHP Warning: socket_write(): unable to write to socket [10057]: Um pedido para enviar ou receber dados no foi permitido porque o socket no est ligado e (durante o envio num socket de datagrama utilizando uma chamada sendto) no foi fornecido um endereo. in C:\xampp\php\sockservr.php on line 11 Warning: socket_write(): unable to write to socket [10057]: Um pedido para enviar ou receber dados no foi permitido porque o socket no est ligado e (durante o envio num socket de datagrama utilizando uma chamada sendto) no foi fornecido um endereo. in C:\xampp\php\sockservr.php on line 11 PHP Warning: socket_read(): unable to read from socket [10057]: Um pedido para enviar ou receber dados no foi permitido porque o socket no est ligado e (durante o envio num socket de datagrama utilizando uma chamada sendto) no foi fornecido um endereo. in C:\xampp\php\sockservr.php on line 13 Warning: socket_read(): unable to read from socket [10057]: Um pedido para enviar ou receber dados no foi permitido porque o socket no est ligado e (durante o envio num socket de datagrama utilizando uma chamada sendto) no foi fornecido um endereo. in C:\xampp\php\sockservr.php on line 13 PHP Warning: socket_shutdown(): unable to shutdown socket [10057]: Um pedido para enviar ou receber dados no foi permitido porque o socket no est ligado e (durante o envio num socket de datagrama utilizando uma chamada sendto) no foi fornecido um endereo. in C:\xampp\php\sockservr.php on line 15 Warning: socket_shutdown(): unable to shutdown socket [10057]: Um pedido para enviar ou receber dados no foi permitido porque o socket no est ligado e (durante o envio num socket de datagrama utilizando uma chamada sendto) no foi fornecido um endereo. in C:\xampp\php\sockservr.php on line 15 Cliente: C:\xampp\php>php -q sockclnt.php PHP Warning: socket_read(): unable to read from socket [10054]: Uma ligao existente foi forada a fechar pelo anfitrio remoto. in C:\xampp\php\sockclnt.php on line 8 Warning: socket_read(): unable to read from socket [10054]: Uma ligao existente foi forada a fechar pelo anfitrio remoto. in C:\xampp\php\sockclnt.php on line 8 Segue também o código de ambos os sockets: SERVIDOR <?php $socket_servidor=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); socket_bind($socket_servidor,'10.1.23.97',9300); socket_listen($socket_servidor,2); socket_accept($socket_servidor); $msg="Mensagem via Socket!\n"; socket_write($socket_servidor,$msg,strlen($msg)); $buf=socket_read($socket_servidor,2048,PHP_NORMAL_READ); socket_shutdown($socket_servidor,2); socket_close($socket_servidor); ?> CLIENTE <?php $socket_cliente=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); socket_connect($socket_cliente,'10.1.23.97',9300); $msg="Mensagem via socket!\n"; socket_write($socket_cliente,$msg,strlen($msg)); $buf=socket_read($socket_cliente,2048,PHP_NORMAL_READ); socket_shutdown($socket_cliente,2); socket_close($socket_cliente); ?> Link to comment Share on other sites More sharing options...
M6 Posted October 23, 2020 at 08:55 AM Report Share #619640 Posted October 23, 2020 at 08:55 AM Verifica se não tens uma firewall a barrar isso ou se o porto não está já em uso por outra aplicação. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now