国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php socket客戶端及服務器端應用實例

php socket客戶端及服務器端應用實例

2020-07-16 14:38PHP教程網 PHP教程

這篇文章主要介紹了php socket客戶端及服務器端應用實例,需要的朋友可以參考下

經常有朋友會對phpsocket應用充滿疑惑,本文就以實例代碼作一講解,希望能對初學php的朋友起到一點幫助作用

具體代碼如下:

1.服務器端代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
class SocketServer{
  private $_port=&#39;9000&#39;;
  private $_address=&#39;127.0.0.1&#39;;
  private $_client_socket_list=array();
  public function __set($name,$val){
    $this--->$name=$val;
  }
  private function _showError($error){
    exit($error);
  }
  /**
   * 開始進行socket服務器端監聽端口
   */
  public function start(){
    // 創建端口
    if (($sock = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP )) === false) {
      $this->_showError("socket_create() failed :reason:" . socket_strerror ( socket_last_error () ));
    }
    // 綁定
    if (socket_bind ( $sock, $this->_address, $this->_port ) === false) {
      $this->_showError("socket_bind() failed :reason:" . socket_strerror ( socket_last_error ( $sock ) ));
    }
    // 監聽
    if (socket_listen ( $sock, 5 ) === false) {
      $this->_showError("socket_bind() failed :reason:" . socket_strerror ( socket_last_error ( $sock ) ) );
    }
    do {
      //當有一個客戶端連接的時候
      if ($client_socket=socket_accept ( $sock )) {
        $count = count ( $this->_client_socket_list ) + 1;
        //把新來的用戶加入 客戶端數組里
        $this->_client_socket_list[]=$client_socket;
        echo "new connection:\r\n";//服務器端輸出當前正在連接的客戶端數量
        echo "current connection:{$count}\r\n";
        //接受客戶端傳過來的字符串
        $msg=$this->read($client_socket);
        echo "client:{$msg}\r\n";
        //服務器向客戶端傳值
        $my_msg="I am fine,think you\r\n";
        $this->send($client_socket,$my_msg);
      }
      /**
       * 這段代碼給你參考,用來判斷是否有客戶端主動失去連接
      else{
        foreach ( $this->_client_socket_list as $socket ) {
          $len = socket_recv ($socket, $buffer, 2048, 0 ); // 接受一下客戶端信息,如果為0代表斷開連接
          if ($len < 7) {
            //這里寫是去連接的客戶端業務
          }
        }
      }
       */
    }while(true); 
  }
  /**
   * 發送數據給客戶端
   */
  public function send($client_socket,$str){
    return socket_write ( $client_socket,$str, strlen ( $str ) );
  }
  /**
   * 從客戶端接受數據
   */
  public function read($client_socket){
    return socket_read ( $client_socket, 8192 );//8192實際代表的接受長度,我用819292表示長一點,這樣長一點的字符串也可以接受到,不到8192也沒關系,會自動識別
  }
}
$socket_server =new SocketServer();
$socket_server->start();//開始監聽

2.客戶端代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
class SocketServer{
  private $_port=&#39;9000&#39;;
  private $_address=&#39;127.0.0.1&#39;;
  private $_client_socket_list=array();
  public function __set($name,$val){
    $this--->$name=$val;
  }
  private function _showError($error){
    exit($error);
  }
  /**
   * 開始進行socket服務器端監聽端口
   */
  public function start(){
    // 創建端口
    if (($sock = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP )) === false) {
      $this->_showError("socket_create() failed :reason:" . socket_strerror ( socket_last_error () ));
    }
    // 綁定
    if (socket_bind ( $sock, $this->_address, $this->_port ) === false) {
      $this->_showError("socket_bind() failed :reason:" . socket_strerror ( socket_last_error ( $sock ) ));
    }
    // 監聽
    if (socket_listen ( $sock, 5 ) === false) {
      $this->_showError("socket_bind() failed :reason:" . socket_strerror ( socket_last_error ( $sock ) ) );
    }
    do {
      //當有一個客戶端連接的時候
      if ($client_socket=socket_accept ( $sock )) {
        $count = count ( $this->_client_socket_list ) + 1;
        //把新來的用戶加入 客戶端數組里
        $this->_client_socket_list[]=$client_socket;
        echo "new connection:\r\n";//服務器端輸出當前正在連接的客戶端數量
        echo "current connection:{$count}\r\n";
        //接受客戶端傳過來的字符串
        $msg=$this->read($client_socket);
        echo "client:{$msg}\r\n";
        //服務器向客戶端傳值
        $my_msg="I am fine,think you\r\n";
        $this->send($client_socket,$my_msg);
      }
      /**
       * 這段代碼給你參考,用來判斷是否有客戶端主動失去連接
      else{
        foreach ( $this->_client_socket_list as $socket ) {
          $len = socket_recv ($socket, $buffer, 2048, 0 ); // 接受一下客戶端信息,如果為0代表斷開連接
          if ($len < 7) {
            //這里寫是去連接的客戶端業務
          }
        }
      }
       */
    }while(true); 
  }
  /**
   * 發送數據給客戶端
   */
  public function send($client_socket,$str){
    return socket_write ( $client_socket,$str, strlen ( $str ) );
  }
  /**
   * 從客戶端接受數據
   */
  public function read($client_socket){
    return socket_read ( $client_socket, 8192 );//8192實際代表的接受長度,我用819292表示長一點,這樣長一點的字符串也可以接受到,不到8192也沒關系,會自動識別
  }
}
$socket_server =new SocketServer();
$socket_server->start();//開始監聽

注意事項:服務器端請用CLI模式運行,cgi模式會超時,這是新手常喜歡犯的錯誤。那么什么是CLI模式呢?簡單的說就是用命令行去執行,而不要用游覽器打開,否則會超時的!

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲一区二区三 | 免费观看一级视频 | 日本一区不卡 | 人人干操| 欧美精品在线播放 | 午夜黄色影院 | 久久成人免费视频 | 国产欧美在线观看 | 久久免费精品视频 | 亚洲午夜精品毛片成人播放器 | 欧美久久久久 | 亚洲综合在线网 | 午夜伦理影院 | 色综合一区二区三区 | 亚洲伊人久久综合 | 九色在线| 亚洲一区二区在线 | 亚洲乱码国产乱码精品精98午夜 | 婷婷四房综合激情五月 | 国产97在线 | 免费 | 久久久在线免费观看 | 3d动漫精品一区二区三区 | 欧美精品在线观看 | 欧美自拍小视频 | 欧美日韩综合 | 男人的天堂中文字幕 | 青草成人免费视频 | 欧美在线亚洲 | 亚洲精品无码专区在线播放 | 91精品久久久久久久久久 | 五月天婷婷国产精品 | 黄色一级大片在线免费看产 | 寡妇高潮一级片 | 欧美精品一级二级 | 欧美日韩成人在线播放 | 欧美freesex交免费视频 | www久久久久| 国产欧美日韩综合精品一区二区 | 中文av字幕| 久久66| 亚洲高清视频网站 |