socket_connect()函数中的问题

时间:2010-09-05 03:49:02

标签: php sockets

// 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);

我收到错误

  

警告:socket_connect()[function.socket-connect]:无法连接[0]:尝试对无法访问的主机执行套接字操作。在第13行的C:\ wamp \ www \ sockert \ sockert.php

谢谢,

3 个答案:

答案 0 :(得分:1)

嗯,看起来你直接从the PHP reference page for socket_bind()拍了这个例子。我假设,此外,您没有更改任何代码,并且没有将机器设置为127.0.0.2。这是你的问题。

请记住,示例代码只是示例代码。这是一个基于示例代码的工作示例,该代码查看随机Google IP。我已经添加了socket_read()函数,所以你可以看到你得到的一些数据(好吧,1024字节)。

    <?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 :(得分:1)

您的开发系统实际上是在听127.0.0.2吗?通常它们只监听127.0.0.1作为环回地址。

您可以使用netstat -a -p tcp

获取有效监听IP /端口的列表

答案 2 :(得分:0)

这意味着127.0.0.2上没有端口80。您是否期望连接到Web服务器?

ping 127.0.0.2

如果您没有回复,则需要指向新地址。