2010-09-05 3 views
2
// Create a new socket 
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 

// An example list of IP addresses owned by the computer 
$sourceips['kevin'] = '127.0.0.1'; 
$sourceips['madcoder'] = '127.0.0.2'; 

// Bind the source address 
socket_bind($sock, $sourceips['madcoder']); 

// Connect to destination address 
socket_connect($sock, $sourceips['madcoder'], 80); 

// Write 
$request = 'GET/HTTP/1.1' . "\r\n" . 
    'Host: example.com' . "\r\n\r\n"; 
socket_write($sock, $request); 

// Close 
socket_close($sock); 

J'obtiens une erreurproblème en fonction socket_connect()

Attention: socket_connect() [function.socket-connect]: impossible de se connecter [0]: Une opération a été tentée sur un hôte inaccessible. dans C: \ wamp \ www \ sockert \ sockert.php sur la ligne 13

Merci,

Répondre

1

Hmm, on dirait que vous avez pris cet exemple directement à partir the PHP reference page for socket_bind(). Je suppose que, de plus, vous n'avez pas modifié le code et n'avez pas défini de machine à 127.0.0.2. C'est ton problème. Rappelez-vous, le code exemple est juste un exemple de code.

Voici un exemple de travail basé sur le code d'exemple qui ressemble à une adresse IP Google aléatoire. J'ai ajouté la fonction socket_read() ainsi vous pouvez voir un peu des données (bien, 1024 bytes de lui) que vous obtenez en arrière.

<?php 
    // Create a new socket 
    $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 

    // An example list of IP addresses owned by the computer 
    $sourceips['google'] = '74.125.127.103'; 

    // Bind the source address 
    socket_bind($sock, $sourceips['google']); 

    // Connect to destination address 
    socket_connect($sock, $sourceips['google'], 80); 

    // Write 
    $request = 'GET/HTTP/1.1' . "\r\n" . 
       'Host: google.com' . "\r\n\r\n"; 
    socket_write($sock, $request); 

    // You'll get some HTTP header information here, 
    // and maybe a bit of HTML for fun! 
    print socket_read($sock, 1024); 

    // Close 
    socket_close($sock); 
    ?> 
1

Votre système de développement écoute-t-il réellement 127.0.0.2? Généralement, ils n'écoutent que 127.0.0.1 comme adresse de bouclage.

Vous pouvez obtenir une liste des adresses IP actives d'écoute/ports avec netstat -a -p tcp

0

Cela signifie qu'il n'y a pas de port 80 sur 127.0.0.2. Est-ce que vous vous attendez à vous connecter à un serveur Web?

ping 127.0.0.2 

Si vous n'obtenez aucune réponse, vous devrez pointer vers une nouvelle adresse.

Questions connexes