English 中文(简体)
计票方案能够连接仍然位于TIM_的港口。 WAIT
原标题:socket program is able to connect to the port which is still in TIME_WAIT
  • 时间:2010-09-28 08:47:13
  •  标签:
  • php-socket
  1. I have written a very simple socket server.
  2. It listens in post 63254.
  3. First i did a socket_create, socket_bind, socket_listen so here a connection is listening.
  4. Then in a loop i do the socket accpet. so here another listen.
  5. the read function reads untill i input exit.
  6. after that the resource id by socket_accept closes.
  7. and then the main connection closes.

在关闭所有连接点之后在TCPview中检查这一进程时,i 仍能看到系统过程显示63254个员额的TPAS_WAIT

如果一再次运行袖珍服务器方案,它将连接起来,如果一个全过程已经关闭,方案终止,现在可以看到另一个技术监评系统。 西非信托公司为同一港口服务。 但仍然可以第三次连接同一港口。

在回答问题时,据说不能联系等待状态的港口。

I opened firefox browser it opened 4 connections. when i closed it all closed and the system process showed 4 time waits for 2 minutes. all time wait stays for 2 minutes and disappears.

因此,我的结论是,每一环节都关在等待的时间,不能避免。

i 读到大量流动的很多员额,但还是肯定的。

i在指挥线上操作以下代码:

www.un.org/Depts/DGACM/index_spanish.htm 我的服务器代码

<?
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush(); 

$str =   ;
$buff =   ;

$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if(!$s)die( Unable to create socket );

if(!socket_bind($s, 127.0.0.1 ,63254))
    die("
Trying to Bind: ".socket_strerror(socket_last_error()));

if(!socket_listen($s,1))
    die(socket_strerror(socket_last_error()));

    while(1)
    {
        $acc = socket_accept($s);
        if(!$acc)die(socket_strerror(socket_last_error()));
//      echo "
".gettype($acc);
        if(!$acc)die(socket_strerror(socket_last_error()));

        while(1)
        {
            $str = socket_read($acc,512);
            $buff.= $str;
            echo $str;
//          echo  :: .gettype($str);

            if($str===false)die(socket_strerror(socket_last_error()));
            if($str=="exit
")break;          
        }

//      if(!socket_shutdown($acc,2))echo socket_strerror(socket_last_error());  
        socket_close($acc);     
        if(preg_match( /exit/ ,$buff))break;
    }
//echo "
Connection closed by server
";   
//if(!socket_shutdown($s,2))echo socket_strerror(socket_last_error());
socket_close($s);
?>

www.un.org/Depts/DGACM/index_spanish.htm 客户代码

<?
    set_time_limit(0);
    $f = fsockopen( 127.0.0.1 ,63254,$a,$b,10);
    if(!$f)die( cannot connect );
    echo "
Connected: 
";
    do{
        $buff = fgets(STDIN);   
        fwrite($f,$buff);
    }while($buff!="exit
");
    fclose($f);
?>

如果不足够,就需要建议改进更好的客户服务器。 该法典只是儿童游戏。 只是试图理解沟通方式。

最佳回答

In stackover question answer it is said that connection cannot be done for port which is in wait state.

我不知道你在谈到什么答案,但你不能bind >到一个港口,这个港口位于TPAS_WAIT状态。 如果你是服务器,你可以使用固定的备份来克服这种情况。 如果你重新找客,你必须等待或使用不同的港口,或者说,哪怕是完全没有规定出入境港,那么该系统就能够找到。 您是服务器,因此,这 t适用于你。

I opened firefox browser it opened 4 connections. when i closed it all closed and the system process showed 4 time waits for 2 minutes. all time wait stays for 2 minutes and disappears.

但这些都是客户港口。 进口港口。 在您的服务器上,他们都是在港口里的,还有一个港口在同一个港口上收听。 只要有一个听力的港口,便会成功。

so what i conclude is for every connection close the time wait is occurs and cannot be avoided.

TPAS_WAIT发生在你结束之时。 如果是收到 您的港口停泊在提格雷港。 统法协会完全是。

问题回答

暂无回答




相关问题
PHP客户与阿帕帕奇·图拉·普兰西联系

我是PHP开发商,在一个与阿帕奇·图拉·普兰森的另一服务器通信的网站上工作,因此,我想知道,现在有几类或某种方式可以用于......。

php sockets read json array from java server

I am connecting to a server written in JAVA using TCP/IP. My application sends json arrays to this server and in some cases also expects some results, json arrays. The problem is that i can easily ...