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

标签 php tcp fsockopen

一个服务正在监听 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);

?>

最佳答案

再补充一点: 你需要更换

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

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

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

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

关于php - 这是使用 PHP 连接到 TCP 端口的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6982170/

相关文章:

php - MySQL 将查询限制为一个一致的值

c++ - 多个 tcp 套接字,一个停止

c# - C# 中的远程主机强制关闭现有连接

tcp - TCP 连接段中的最大窗口大小是多少?

ssl - PayPal IPN 更新以适应 HTTP1.1 - 连接由对等方重置

php - 如何有效地生成给定长度字母的所有可能字母组合的数组?

php - 如何检索按日期排序的分组消息 SQL

php - 使用 PHP DirectoryIterator 列出和排序文件

php - 使用 fsockopen 连接到服务器 - 连接被拒绝

java - JSP 中的 fsockopen 等价物