中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

100多行PHP代碼實現socks5代理服務器[2]
來源:易賢網 閱讀:1474 次 日期:2016-08-24 16:10:56
溫馨提示:易賢網小編為您整理了“100多行PHP代碼實現socks5代理服務器[2]”,方便廣大網友查閱!

100多行PHP代碼實現socks5代理服務器,這次是使用swoole純異步來寫,使用狀態機來處理數據。目前用它訪問開源中國木有壓力,但訪問網易新聞就壓力山大。我發現我用別的語言寫得代理,訪問網易新聞都壓力大。嘎嘎,學藝不精。

對swoole理解不深,不知道怎么處理socket shutdown只關閉讀/寫這樣,還有就是連接超時,讀寫超時這種怎么處理。在網上看到作者說要用定時器,感覺好麻煩,所以,這次的代理,雖然個人用,一般不會有什么問題,但離產品級的代理,還有段路要走。

如果要利用多核,就使用process模式,設置worker個數為cpu數量即可。

<?php

class Client

{

 public $connected = true;

 public $data = '';

 public $remote = null;

 public $status = 0;

}

class Server

{

 public $clients = [];

 public function start()

 {

  $server = new swoole_server('0.0.0.0', 8388, SWOOLE_BASE, SWOOLE_SOCK_TCP);

  $server->set([

   'max_conn' => 1000, 

   'daemonize' => 1,

   'reactor_num' => 1,

   'worker_num' => 1,

   'dispatch_mode' => 2,

   'buffer_output_size' => 128 * 1024 * 1024,

   'open_cpu_affinity' => 1,

   'open_tcp_nodelay' => 1,

   'log_file' => 'socks5_server.log',

  ]);

  $server->on('connect', [$this, 'onConnect']);

  $server->on('receive', [$this, 'onReceive']);

  $server->on('close', [$this, 'onClose']);

  $server->start();

 }

 public function onConnect($server, $fd, $fromID)

 {

  $this->clients[$fd] = new Client();

 }

 public function onReceive($server, $fd, $fromID, $data)

 {

  ($this->clients[$fd])->data .= $data;

  $this->parse($server, $fd); 

 }

 public function onClose($server, $fd, $fromID)

 {

  $client = $this->clients[$fd];

  $client->connected = false;

 }

 private function parse($server, $fd) 

 {

  $client = $this->clients[$fd];

  switch ($client->status) {

   case 0: {

    if (strlen($client->data) >= 2) {

     $request = unpack('c*', substr($client->data, 0, 2));

     if ($request[1] !== 0x05) {

      echo '協議不正確:' . $request[1], PHP_EOL;

      $server->close($fd);

      break;

     }

     $nmethods = $request[2];

     if (strlen($client->data) >= 2 + $nmethods) {

      $client->data = substr($client->data, 2 + $nmethods);

      $server->send($fd, "\x05\x00");

      $client->status = 1;

     }

    }

   }

   case 1: {

    if (strlen($client->data) < 5)

     break;

    $request = unpack('c*', $client->data);

    $aType = $request[4];

    if ($aType === 0x03) { // domain

     $domainLen = $request[5];

     if (strlen($client->data) < 5 + $domainLen + 2) { 

      break; 

     }

     $domain = substr($client->data, 5, $domainLen);

     $port = unpack('n', substr($client->data, 5 + $domainLen, 2))[1]; 

     $client->data = substr($client->data, 5 + $domainLen + 2);

    } else if ($aType === 0x01) { // ipv4

     $domain = long2ip(unpack('N', substr($client->data, 4, 4))[1]);

     $port = unpack('n', substr($client->data, 8, 2))[1]; 

     $client->data = substr($client->data, 10);

    } else {

     echo '不支持的atype:' . $aType, PHP_EOL;

     $server->close($fd);

     break;

    }

    $remote = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);

    $remote->on('connect', function($cli) use($client, $server, $fd, $remote) {

     $server->send($fd, "\x05\x00\x00\x01\x00\x00\x00\x00\x00\x00");

     $client->status = 2;

     $client->remote = $remote;

    });

    $remote->on("error", function(swoole_client $cli) use($server, $fd) {

     //$server->send($fd, ""); // todo 連接不上remote

     echo 'connect to remote error.', PHP_EOL;

     $server->close($fd);

    });

    $remote->on('receive', function($cli, $data) use($server, $fd, $client) {

     if (!$client->connected) {

      echo 'connection has been closed.', PHP_EOL;

      return;

     }

     $server->send($fd, $data);

    });

    $remote->on('close', function($cli) use($server, $fd, $client) {

     $client->remote = null;

    });

    if ($aType === 0x03) {

     swoole_async_dns_lookup($domain, function($host, $ip) use($remote, $port, $server, $fd) {

      //todo 當host為空時的處理。貌似不存在的域名都解析成了本機的外網ip,奇怪

      if (empty($ip) || empty($host)) {

       echo "host:{$host}, ip:{$ip}\n";

       $server->close($fd);

       return;

      }

      $remote->connect($ip, $port);

     });

    } else {

     $remote->connect($domain, $port);

    }

   }

   case 2: {

    if (strlen($client->data) === 0) {

     break;

    }

    if ($client->remote === null) {

     echo 'remote connection has been closed.', PHP_EOL;

     break;

    }

    $sendByteCount = $client->remote->send($client->data);

    if ($sendByteCount === false || $sendByteCount < strlen($client->data)) {

     echo 'data length:' , strlen($client->data), ' send byte count:', $sendByteCount, PHP_EOL; 

     echo $client->data, PHP_EOL;

     $server->close($fd); 

    }

    $client->data = '';

   }

  }

 }

}

(new Server())->start();

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美二区三区的天堂| 国产精品乱码妇女bbbb| 国产精品久久免费看| 丰满少妇久久久久久久| 亚洲欧美怡红院| 欧美日韩在线三区| 久久91精品国产91久久小草| 日韩一区二区三区在线观看| 精品一区二区三区免费毛片爱 | 4438x成人网最大色成网站| 麻豆免费看一区二区三区| 国产日韩v精品一区二区| 91成人看片片| 国产一区二区三区四区在线观看| 亚洲人亚洲人成电影网站色| 91精品国产免费久久综合| 国产91精品精华液一区二区三区 | 日韩毛片高清在线播放| 欧美日韩精品欧美日韩精品一综合| 七七婷婷婷婷精品国产| 国产精品二区一区二区aⅴ污介绍| 精品视频在线免费观看| 高清国产一区二区三区| 亚洲成在线观看| 中文字幕成人av| 日韩一级视频免费观看在线| 91美女片黄在线| 国产精华液一区二区三区| 午夜在线成人av| 国产精品久久久久久久裸模| 日韩久久精品一区| 欧美三级视频在线观看| 一本到三区不卡视频| 懂色中文一区二区在线播放| 久草这里只有精品视频| 日韩va欧美va亚洲va久久| 亚洲国产美国国产综合一区二区| 国产精品天干天干在观线| 久久久久久夜精品精品免费| 日韩视频免费观看高清在线视频| 欧美又粗又大又爽| jlzzjlzz国产精品久久| 国产福利91精品一区| 国产乱对白刺激视频不卡| 日本成人中文字幕| 日本不卡123| 麻豆一区二区99久久久久| 琪琪久久久久日韩精品| 日本视频免费一区| 日韩国产高清在线| 日韩国产欧美视频| 日本美女一区二区三区| 麻豆一区二区99久久久久| 日韩av一级电影| 日本不卡一区二区三区高清视频| 天堂影院一区二区| 视频一区二区三区入口| 免费精品99久久国产综合精品| 午夜精品久久久久影视| 日日噜噜夜夜狠狠视频欧美人| 日韩和欧美一区二区三区| 免费一级片91| 国产成人精品三级麻豆| 成人激情视频网站| 色综合久久久久网| 欧美美女bb生活片| 精品免费视频.| 中文字幕精品综合| 一区二区三区欧美视频| 婷婷久久综合九色综合伊人色| 麻豆国产欧美日韩综合精品二区| 韩国三级在线一区| 成人a区在线观看| 欧美亚洲免费在线一区| 日韩一区二区在线看片| 国产午夜精品久久久久久久| 亚洲欧美综合在线精品| 视频一区二区欧美| 成人午夜激情在线| 欧美三区免费完整视频在线观看| 日韩欧美黄色影院| 国产精品福利影院| 日本午夜一本久久久综合| 成熟亚洲日本毛茸茸凸凹| 欧美性欧美巨大黑白大战| 欧美www视频| 亚洲精品一卡二卡| 国产麻豆精品95视频| 欧美性大战xxxxx久久久| 精品日韩欧美在线| 一区二区三区在线观看视频| 精品午夜久久福利影院| 日本道免费精品一区二区三区| 精品动漫一区二区三区在线观看| 一区二区三区在线观看动漫| 久久国产精品无码网站| 91成人在线精品| 国产精品久久久久桃色tv| 免费人成在线不卡| 色香色香欲天天天影视综合网| 欧美精品一区二区在线播放| 亚洲图片自拍偷拍| 国产成人精品www牛牛影视| 欧美精品粉嫩高潮一区二区| 26uuu国产一区二区三区| 亚洲天堂成人在线观看| 国产美女av一区二区三区| 在线精品视频一区二区三四| 国产香蕉久久精品综合网| 香蕉加勒比综合久久| 国产成人精品亚洲午夜麻豆| 91精品国产麻豆| 亚洲精品免费在线观看| 国产成人精品亚洲777人妖| 色综合天天性综合| 亚洲精品一区二区三区精华液 | 午夜欧美视频在线观看| www.久久精品| 日本一区二区三区高清不卡| 国内外成人在线视频| 777午夜精品视频在线播放| 亚洲一二三四在线| 色婷婷综合久久| 亚洲激情男女视频| 色综合久久中文综合久久牛| 亚洲三级免费观看| 色美美综合视频| 一区二区三区国产豹纹内裤在线| 91在线高清观看| 亚洲视频一区在线| 色综合一区二区三区| 亚洲综合偷拍欧美一区色| 91官网在线观看| 五月天一区二区三区| 91精品国产综合久久精品app| 日韩专区在线视频| 精品久久一区二区三区| 国产精品自拍av| 亚洲国产精华液网站w| 成人午夜激情片| 一区二区三区欧美在线观看| 欧美日韩亚洲高清一区二区| 天天亚洲美女在线视频| 欧美一区二区视频网站| 国产一区不卡视频| 国产精品天美传媒沈樵| 91国产精品成人| 久久精品国产亚洲高清剧情介绍| 久久久亚洲综合| 91麻豆文化传媒在线观看| 亚洲大型综合色站| 精品av综合导航| 91欧美激情一区二区三区成人| 一区二区三区鲁丝不卡| 日韩一区二区三区高清免费看看| 国产一区二区三区不卡在线观看| 中文字幕亚洲精品在线观看| 欧美精品乱码久久久久久按摩| 国产一区二区三区四区五区入口 | 日韩和欧美一区二区三区| 精品日韩99亚洲| 91麻豆高清视频| 激情久久久久久久久久久久久久久久| 国产农村妇女毛片精品久久麻豆 | 亚洲国产美女搞黄色| 精品国产成人系列| 色综合一区二区三区| 麻豆精品视频在线观看| 成人欧美一区二区三区视频网页| 欧美日韩国产影片| 精品午夜久久福利影院| 亚洲狠狠爱一区二区三区| 久久久午夜电影| 欧美二区三区的天堂| 91在线看国产| 国产成人啪免费观看软件| 日韩精品视频网站| 亚洲精品国产第一综合99久久| 精品成人一区二区| 欧美日韩精品电影| 99re在线视频这里只有精品| 激情深爱一区二区| 五月天丁香久久| 亚洲综合久久av| 国产精品久久久久久一区二区三区| 日韩视频一区二区三区 | 一区二区三区在线影院| 久久久一区二区三区捆绑**| 3atv一区二区三区| 欧美羞羞免费网站| 成a人片亚洲日本久久| 国产福利91精品| 国产精品乡下勾搭老头1| 日本 国产 欧美色综合| 亚洲成人福利片| 亚洲色大成网站www久久九九| 国产精品久久精品日日| 日韩一级高清毛片| 欧美精品xxxxbbbb| 7777精品伊人久久久大香线蕉的|