这是使用PHP连接到TCP端口的正确方法吗?

这是使用PHP连接到TCP端口的正确方法吗?,php,tcp,fsockopen,Php,Tcp,Fsockopen,服务正在侦听1xx.xxx.xx.xx上的端口1234 我正在使用phpfsockopen()与服务建立tcp连接!我必须将传入的数据发送到该服务,并将从该服务获得的回复保存在一个文件中。 第一次发送数据时,连接已建立。代码第二次尝试打开端口时,服务显示SP尝试连接。连接被拒绝。存在活动的SP连接。SP关闭 我如何克服这个问题 #!/usr/local/php5/bin/php-cgi <?php //The Client error_reporting(E_ALL); $CONTENT

服务正在侦听1xx.xxx.xx.xx上的端口1234 我正在使用php
fsockopen()
与服务建立tcp连接!我必须将传入的数据发送到该服务,并将从该服务获得的回复保存在一个文件中。 第一次发送数据时,连接已建立。代码第二次尝试打开端口时,服务显示SP尝试连接。连接被拒绝。存在活动的SP连接。SP关闭

我如何克服这个问题

#!/usr/local/php5/bin/php-cgi
<?php 
//The Client
error_reporting(E_ALL);
$CONTENT = $_GET["DATA"]."";
echo urldecode($CONTENT);
$Handle = fopen("/xxx/xxx/xxx.txt", "a");
fwrite($Handle, $CONTENT);
fclose($Handle);

//$address = "1xx.xxx.xx.xx";
//$port = 1234;

/* Create a TCP/IP socket. */
$fp = fsockopen("tcp://1xx.xxx.xx.xx",1234 , $errno, $errdesc); 
if ( ! $fp ) {
  die ( "Couldn't connect to 1xx.xxx.xx.xx :\nError: $errno\nDesc: $errdesc\n" );
}
fputs ( $fp, $CONTENT );
while ( ! feof( $fp ) ) {
  $output = fgets( $fp, 2048 );
}
fclose( $fp );
$Handle1 = fopen("/xxx/xxx/yyy.txt", "a");
fwrite($Handle1, $output);
fclose($Handle1);

?>
#/usr/local/php5/bin/php-cgi
另请注意:
你需要更换

while ( ! feof( $fp ) ) {
  $output = fgets( $fp, 2048 );
}

因为
$output=fgets($fp,2048)覆盖每个迭代循环中的$output内容


关于您的问题-我认为服务中存在一些错误。

我想这不是套接字连接的问题,而是服务的某些“功能”(如果我知道您更正了,错误消息在“$output”中,而在“$errdesc”中没有)。在请求服务后,可能必须使用某种“退出”或“退出”命令关闭会话。如果这不存在,我们可能需要更多关于服务的信息。
$output=''
while ( ! feof( $fp ) ) {
  $output .= fgets( $fp, 2048 );
}