«
用PHP开发C/S结构

时间:2008-5-31    作者:Deri    分类: 分享


   <p>  服务器</p><p>  <code><?php<br />// Server<br />// 设置错误处理<br />error_reporting (E_ALL);<br />// 设置运行时间<br />set_time_limit (0);<br />// 起用缓冲<br />ob_implicit_flush ();<br />$ip = "127.0.0.1";    // IP地址<br />$port = 1000;      &#160;// 端口号<br />$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);   &#160;// 创建一个SOCKET<br />if ($socket)<br />  
    echo "socket_create() successed!\n";<br />else<br />  
    echo "socket_create() failed:".socket_strerror ($socket)."\n";<br />$bind = socket_bind ($socket, $ip, $port);       // 绑定一个SOCKET<br />if ($bind)<br />  
    echo "socket_bind() successed!\n";<br />else<br />  
    echo "socket_bind() failed:".socket_strerror ($bind)."\n";<br />$listen = socket_listen ($socket);        &#160;// 间听SOCKET<br />if ($listen)<br />  
    echo "socket_listen() successed!\n";<br />else<br />  
    echo "socket_listen() failed:".socket_strerror ($listen)."\n";<br />while (true)<br />{<br />  
    $msg = socket_accept ($socket);       &#160;// 接受一个SOCKET<br />  
    if (!$msg)<br />  
    {<br />    
    echo "socket_accept() failed:".socket_strerror ($msg)."\n";<br />    
    break;<br />  
    }<br />  
    $welcome = "Welcome to PHP Server!\n";<br />  
    socket_write ($msg, $welcome, strlen ($welcome));<br />  
    while (true)<br />  
    {<br />    
    $command = strtoupper (trim (socket_read ($msg, 1024)));<br />    
    if (!$command)<br />      
    break;<br />    
    switch ($command)<br />    
    {<br />      
    case "HELLO":<br />        
    $writer = "Hello Everybody!";<br />        
    break;<br />      
    case "QUIT":<br />        
    $writer = "Bye-Bye";<br />        
    break;<br />      
    case "HELP":<br />        
    $writer = "HELLO\tQUIT\tHELP";<br />        
    break;<br />      
    default:<br />        
    $writer = "Error Command!";<br />    
    }<br />    
    socket_write ($msg, $writer, strlen ($writer));<br />    
    if ($command == "QUIT")<br />      
    break;<br />  
    }<br />  
    socket_close ($msg);<br />}<br />socket_close ($socket);         &#160;// 关闭SOCKET<br />?></code></p><p>  客户端</p><p>  <code><?php<br />// Client<br />// 设置错误处理<br />error_reporting (E_ALL);<br />// 设置处理时间<br />set_time_limit (0);<br />$ip = "127.0.0.1";   &#160;// IP 地址<br />$port = 1000;      // 端口号<br />$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP); &#160;// 创建一个SOCKET<br />if ($socket)<br />  
    echo "socket_create() successed!\n";<br />else<br />  
    echo "socket_create() failed:".socket_strerror ($socket)."\n";<br />$conn = socket_connect ($socket, $ip, $port);   &#160;// 建立SOCKET的连接<br />if ($conn)<br />  
    echo "Success to connection![".$ip.":".$port."]\n";<br />else<br />  
    echo "socket_connect() failed:".socket_strerror ($conn)."\n";<br />echo socket_read ($socket, 1024); &#160;<br />$stdin = fopen ('php://stdin', 'r');<br />while (true)<br />{<br />  
    $command = trim (fgets ($stdin, 1024));<br />  
    socket_write ($socket, $command, strlen ($command));<br />  
    $msg = trim (socket_read ($socket, 1024));<br />  
    echo $msg."\n";<br />  
    if ($msg == "Bye-Bye")<br />    
    break;<br />}<br />fclose ($stdin);<br />socket_close ($socket);<br />?></code></p>