1

サービスが 1xx.xxx.xx.xx のポート 1234 をリッスンしてfsockopen()います サービスとの tcp 接続を確立するために php を使用しています! 着信データをサービスに送信し、サービスから受け取った応答をファイルに保存する必要があります。初めてデータを送信すると、接続が確立されます。コードが 2 回目にポートを開こうとすると、今度はサービスが 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);

?>
4

1 に答える 1

0

もう1つの注意:交換する必要があります

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

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

$output = fgets( $fp, 2048 );各反復ループで $output コンテンツを上書きするためです。

ご質問について - サービスにエラーがあると思います。

于 2011-08-08T13:18:22.213 に答える