SOCKET 點對點通信

要應用鍵盤輸入的一些知識如下例子:

  1. <?php  
  2. fwrite(STDOUT, "Please input your name:\t");  
  3. echo $name = trim(fgets(STDIN));  
  4. fwrite(STDOUT, 'Hello ' . $name);  
  5. ?> 

點對點通信開始

1.SERVER

  1. <?php     
  2. // 建立server端socket     
  3. $tcp = getprotobyname("tcp");     
  4. $socket = socket_create(AF_INET, SOCK_STREAM, $tcp);     
  5. socket_bind($socket'127.0.0.1', 10008);       //綁定要監聽的端口     
  6. socket_listen($socket);       //監聽端口     
  7. $connection = socket_accept($socket);     
  8. if(!$connection){     
  9.     echo "connect fail";     
  10. }  
  11. $data = @socket_read($connection, 1024, PHP_NORMAL_READ);  
  12. printf("Client: " . $data);  
  13. //鍵盤輸入信息  
  14. while ($buffer= trim(fgets(STDIN))) {  
  15.     if($buffer =="bye"break;  
  16.     // 向客戶端傳遞一個信息數據     
  17.     socket_write($connection$buffer . "\n");  
  18.     // 從客戶端取得信息     
  19.     $data = @socket_read($connection, 1024, PHP_NORMAL_READ);  
  20.     printf("Client : " . $data);  
  21. }  
  22. socket_close($connection);  
  23. //關閉 socket     
  24. printf("Closed the socket\n");  
  25.  
  26. ?>   

2:CLIENT 

  1. <?php 
  2. // 建立客戶端的socet連接     
  3. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);     
  4. $connection = socket_connect($socket, '127.0.0.1', 10008);    //連接服務器端socket  
  5. //鍵盤輸入信息  
  6. while ($datatrim(fgets(STDIN))) {  
  7.     if($data =="exit") break;  
  8.     // 將客戶的信息寫到通道中,傳給服務器端     
  9.     if (!socket_write($socket, $data."\n")) {     
  10.         echo "Write failed\n";  
  11.     }  
  12.     //服務器端收到信息後,給於的迴應信息     
  13.     $buffer = socket_read($socket, 1024, PHP_NORMAL_READ);  
  14.     if($buffer=="bye") break;  
  15.     echo "Server Data:" . $buffer;  
  16. }  
  17.  
  18. ?>   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章