关闭

socket(php)(不确定是否是长连接)(一次连接,多次接受,发送特定字符时关闭连接)整理版本3

标签: phpsocket通讯
46人阅读 评论(0) 收藏 举报
分类:
<?php  
	set_time_limit(0);  
	$ip = '192.168.1.52';  
	$port = 8079;  
	  
	/*----------------    以下操作都是手册上的    -------------------*/  
	if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {  
	    echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";  
	}   
	if(($ret = socket_bind($sock,$ip,$port)) < 0) {  
	    echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";  
	}   
	if(($ret = socket_listen($sock,4)) < 0) {  
	    echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";  
	}    
	$count = 0;      
	do {  
	    if (($msgsock = socket_accept($sock)) < 0) {  
	        echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";  
	        break;  
	    } else {            
	        $msg = "\nPHP Test Server. \n" ."用quit,shutdown,sun...等命令测试.\n";  
	        socket_write($msgsock, $msg, strlen($msg)); 
	        socket_last_error();   
	        do{
	        	if(false ===($buf = socket_read($msgsock,8192))){
	        		echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";  
                	break 2; 
	        	} 
	        	if (!$buf = trim($buf)) {  
                continue;  
		        }  
		        if ($buf == 'quit') {  
		                break;  
		        }  
		        if ($buf == 'shutdown') {  
		                socket_close($msgsock);  
		                break 2;  
		        }  
		        if ($buf == 'sun') {  
		                echo'what are you doing?';  
		        }                     
		        $talkback = "收到的信息:" . $buf;  
		        socket_write($msgsock, $talkback, strlen($talkback));
		        echo $talkback . '<br /n>';
	        }while(true);
	                         
	    }  
	    socket_close($msgsock);      
	} while (true);      
	socket_close($sock);    
?>

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:163次
    • 积分:36
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档