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

100多行PHP代碼實(shí)現(xiàn)socks5代理服務(wù)器[2]
來(lái)源:易賢網(wǎng) 閱讀:1424 次 日期:2016-08-24 16:10:56
溫馨提示:易賢網(wǎng)小編為您整理了“100多行PHP代碼實(shí)現(xiàn)socks5代理服務(wù)器[2]”,方便廣大網(wǎng)友查閱!

100多行PHP代碼實(shí)現(xiàn)socks5代理服務(wù)器,這次是使用swoole純異步來(lái)寫(xiě),使用狀態(tài)機(jī)來(lái)處理數(shù)據(jù)。目前用它訪問(wèn)開(kāi)源中國(guó)木有壓力,但訪問(wèn)網(wǎng)易新聞就壓力山大。我發(fā)現(xiàn)我用別的語(yǔ)言寫(xiě)得代理,訪問(wèn)網(wǎng)易新聞都?jí)毫Υ蟆8赂拢瑢W(xué)藝不精。

對(duì)swoole理解不深,不知道怎么處理socket shutdown只關(guān)閉讀/寫(xiě)這樣,還有就是連接超時(shí),讀寫(xiě)超時(shí)這種怎么處理。在網(wǎng)上看到作者說(shuō)要用定時(shí)器,感覺(jué)好麻煩,所以,這次的代理,雖然個(gè)人用,一般不會(huì)有什么問(wèn)題,但離產(chǎn)品級(jí)的代理,還有段路要走。

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

<?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 '協(xié)議不正確:' . $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 當(dāng)host為空時(shí)的處理。貌似不存在的域名都解析成了本機(jī)的外網(wǎng)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();

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:100多行PHP代碼實(shí)現(xiàn)socks5代理服務(wù)器[2]
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲视频图片小说| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美一级在线播放| 国产精品无码永久免费888| 日韩视频―中文字幕| 欧美激情成人在线视频| 亚洲福利视频三区| 模特精品裸拍一区| 亚洲性视频网站| 国产精品午夜在线| 欧美一区二区网站| 韩国精品久久久999| 欧美国产第一页| 亚洲一区二区三区成人在线视频精品| 欧美性jizz18性欧美| 亚洲一区二区三区四区五区黄| 国产欧美日韩中文字幕在线| 裸体素人女欧美日韩| 亚洲精品久久久久久久久| 欧美亚一区二区| 久久er精品视频| 亚洲韩日在线| 国产一区二区三区久久 | 欧美极品在线观看| 亚洲女与黑人做爰| 在线观看欧美激情| 国产精品欧美日韩一区二区| 欧美一区二区三区在| 亚洲精美视频| 国产精品久久久久久久电影 | 一本久久青青| 国产真实精品久久二三区| 欧美日韩一区二区高清| 亚洲一区免费| 一本色道久久88亚洲综合88| 国产一区二区三区高清在线观看| 欧美精品成人| 久久成人18免费观看| 亚洲午夜女主播在线直播| 在线观看91久久久久久| 国产亚洲一区二区三区在线播放| 欧美日韩和欧美的一区二区| 久久综合九色欧美综合狠狠| 亚洲欧美日韩久久精品| 日韩视频免费在线观看| 亚洲国产乱码最新视频| 国产一区二区三区久久悠悠色av | 黑人一区二区| 国产人久久人人人人爽| 欧美日韩国产亚洲一区| 久久久久久久久久久久久女国产乱| 国产精品99久久久久久久女警| 亚洲第一区在线| 一区一区视频| 在线免费日韩片| 国产欧美一区二区在线观看| 欧美日韩在线免费观看| 欧美成人精品一区二区三区| 久久免费国产精品| 久色婷婷小香蕉久久| 久久精品国产综合精品| 久久久99精品免费观看不卡| 久久久久久久一区| 欧美gay视频| 欧美日韩一区不卡| 欧美日韩人人澡狠狠躁视频| 欧美性大战久久久久| 国产精品一区三区| 国产一区二区在线观看免费播放| 国产一区二区丝袜高跟鞋图片| 伊大人香蕉综合8在线视| 在线播放不卡| 99伊人成综合| 欧美一级在线播放| 免费观看成人www动漫视频| 欧美黄色aa电影| 国产精品美女久久久浪潮软件| 国产日本亚洲高清| 亚洲第一主播视频| 99亚洲视频| 久久精品女人的天堂av| 欧美另类女人| 国产网站欧美日韩免费精品在线观看 | 欧美主播一区二区三区| 欧美日韩在线观看视频| 国产精品每日更新| 国产伊人精品| 黑人巨大精品欧美一区二区小视频| 亚洲福利视频一区| 亚洲精品乱码久久久久久| 日韩一区二区精品视频| 亚洲伊人久久综合| 久久成人国产| 欧美日韩免费观看一区二区三区 | 国产精品一区二区男女羞羞无遮挡| 国产精品视频免费观看www| 一区二区视频欧美| 亚洲欧美日韩精品一区二区| 欧美一激情一区二区三区| 久久亚洲综合色一区二区三区| 你懂的国产精品永久在线| 欧美日韩国产在线看| 国产香蕉久久精品综合网| 亚洲国产高清一区| 性色av一区二区三区红粉影视| 欧美v国产在线一区二区三区| 国产精品久久久久久av下载红粉 | 海角社区69精品视频| 欧美体内she精视频| 激情欧美一区二区三区在线观看| 日韩一区二区精品葵司在线| 欧美在线观看视频在线| 欧美日韩三级在线| 91久久精品美女| 欧美中文在线免费| 欧美日本在线看| 亚洲高清免费在线| 在线综合欧美| 美腿丝袜亚洲色图| 国产女精品视频网站免费 | 91久久久在线| 久久er99精品| 国产欧美日韩| 亚洲素人一区二区| 欧美精品v日韩精品v国产精品| 国产一区二区三区黄视频| 亚洲一区二区av电影| 欧美日韩成人在线播放| 一区在线免费观看| 欧美在线二区| 国产专区精品视频| 午夜一区二区三区不卡视频| 欧美日韩亚洲一区| 在线视频精品| 欧美日本免费| 中文在线资源观看网站视频免费不卡| 久久久之久亚州精品露出| 国产一区二区精品久久99| 午夜一区二区三区不卡视频| 国产精品有限公司| 欧美一区二区三区喷汁尤物| 国产自产精品| 欧美成人在线网站| 99热这里只有精品8| 国产精品美女在线观看| 午夜宅男久久久| 好吊成人免视频| 欧美大片在线观看| 亚洲一区二区三区视频播放| 国产日韩亚洲| 免费精品视频| 在线视频一区观看| 国产精品尤物| 免费成人av在线看| 亚洲婷婷综合久久一本伊一区| 国产精品美女诱惑| 久久久www成人免费精品| 亚洲国内自拍| 国产精品视频一二三| 另类天堂av| 亚洲性夜色噜噜噜7777| 黑丝一区二区| 欧美日韩国产一区二区三区地区 | 欧美色道久久88综合亚洲精品| 亚洲一区二区三区精品在线观看| 欧美日韩一区二区三区在线视频| 亚洲欧美精品在线观看| 黄色国产精品| 欧美成人精品在线播放| 亚洲一区二区在线观看视频| 国产精品视频一二三| 久久九九免费| 在线视频日韩| 狠狠色丁香久久婷婷综合丁香| 久久天堂精品| 中日韩高清电影网| 国产午夜亚洲精品不卡| 欧美激情一区二区三区 | 亚洲欧美国产精品桃花| 国语自产精品视频在线看| 欧美日韩午夜视频在线观看| 欧美一区二区黄色| 亚洲毛片一区二区| 国产视频在线一区二区 | 亚洲第一精品夜夜躁人人躁| 欧美日韩四区| 欧美激情一区三区| 性欧美长视频| 99热精品在线| 日韩一级片网址| 亚洲国产精品v| 国产日韩欧美在线播放| 欧美国产亚洲精品久久久8v| 亚洲欧美日韩国产综合| 亚洲人成网站777色婷婷| 悠悠资源网久久精品| 国产亚洲激情视频在线| 国产精品啊v在线| 欧美日韩亚洲系列| 久久午夜视频|