Use PHP socket to send and receive data

I am trying to send and receive data through a PHP socket.

Evrything is fine, but when I try to send data, PHP doesn't send anything (Wireshark told me that the length of the data transferred was 0).

I am using this code:

<?php $address = 'example.com'; $port = 1234; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $sockconnect = socket_connect($sock, $address, $port); $c = 0; do { $c++; $msg = '<test>Xml data</test>'; socket_write($sock, $msg, strlen($msg)); echo socket_read($sock, 1024 * 100, PHP_NORMAL_READ); } while ($c < 3); socket_close($sock); 

Can anyone help me? Thanks for reading my question.

+6
source share
2 answers

How can you know that everything is in order if you do not check errors even once?

Consider the following example from a guide :

 <?php error_reporting(E_ALL); /* Get the port for the WWW service. */ $service_port = getservbyname('www', 'tcp'); /* Get the IP address for the target host. */ $address = gethostbyname('www.example.com'); /* Create a TCP/IP socket. */ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; } echo "Attempting to connect to '$address' on port '$service_port'..."; $result = socket_connect($socket, $address, $service_port); if ($result === false) { echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n"; } $in = "HEAD / HTTP/1.1\r\n"; $in .= "Host: www.example.com\r\n"; $in .= "Connection: Close\r\n\r\n"; $out = ''; echo "Sending HTTP HEAD request..."; socket_write($socket, $in, strlen($in)); echo "OK.\n"; echo "Reading response:\n\n"; while ($out = socket_read($socket, 2048)) { echo $out; } socket_close($socket); ?> 
+7
source

You are not using the gethostbyname function, so it is trying to connect to a nonexistent IP address

 <?php $address= gethostbyname('yourdata.com'); 
+1
source

Source: https://habr.com/ru/post/906629/


All Articles