2016-04-29 102 views
0

我试图在我的电脑上使用teamspeak,但由于简单,我想用我的树莓派PI来执行脚本,所以我只是写我的脚本:PHP socket_connect()没有连接到本地IP

<?php 
error_reporting(E_ALL); 
ob_implicit_flush(); 

$address = "192.168.2.11"; 
$service_port = 25639; 

$socket = socket_create(AF_INET, SOCK_STREAM, 0); 
if($socket === false) 
{ 
    die("Error: " . socket_strerror(socket_last_error())."\n"); 
} 
echo "Connecting to {$address}:{$service_port}...\n"; 
$result = socket_connect($socket, $address, $service_port); 
if($result === false) 
{ 
    die("Error: ".socket_strerror(socket_last_error($socket))."\n"); 
} 
echo socket_read($socket, 512); 
?> 

但每次我运行它,它只是给我:

连接到192.168.2.11:25639 ...

并没有进一步的消息。我想这个错误是socket_create,但改变参数只是抛出错误。

我在谷歌搜索和搜索堆栈,但它看起来像我是唯一一个有这个问题。 :/

+0

你们是不是要运行这个作为一个客户端或服务器? –

+0

@MatthijsOtterloo连接到teampeak telnet事物的客户端。 – timmyRS

+0

您认为PHP正在按顺序执行其指令吗?如果它输出“Connecting to 192.168.2.11:25639 ...”,那么*在socket_create()之后,但在socket_connect()和更多代码之前。你可能会先在socket_connect()之后添加一些输出来确认问题出在哪里。如果你想连接到本地IP为什么不使用本地主机? – symcbean

回答

0

尝试运行此:

<?php 
$host="192.168.2.11" ; 
$port=25639; 
$timeout=30; 
$sk=fsockopen($host,$port,$errnum,$errstr,$timeout) ; 

if (!is_resource($sk)) { 
    exit("connection fail: ".$errnum." ".$errstr) ; 
} else { 
    echo "Connected"; 
} 
?> 
+0

谢谢,fsockopen是我正在寻找的命令。 :D – timmyRS

+0

太棒了!如果你需要更多的帮助,随时问:) –