1read 100read
2013年17WebProg201: use Socket;について熱く語るスレ (103)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
PHP上級者が集まるスレ (584)
【勉強するのは】PHPとPerl【どっちが最初?】 (393)
ソース表示禁止 (156)
1chスクリプト改造(改良)スレ パートA (370)
【PHP】フレームワーク CakePHP 16ホール目【v2.4】 (191)
CGIに依存しないPerlの話題一般/Part2 (254)
use Socket;について熱く語るスレ
- 1 :02/03/10 〜 最終レス :2013/04/02
- Perlの醍醐味であるSocketについて語ろうぜ
※質問は専用スレへ。CGI串ってどこ?といった類もお断り
- 2 :
- 2
- 3 :
- 今だ!3ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
- 4 :
- 4げと
- 5 :
- 5げとおおおおおおおおおおおおおおおお
- 6 :
- といってもネタがないので一つソースでも乗っけてみるか
#!/usr/local/bin/perl
use IO::Socket;use LWP::Simple;
while(1){$n=IO::Socket::INET->new(LocalPort=>80,Listen=>10)->accept();
print$n get((split/ /,<$n>)[1]);$n->close();}
ほれ、君たちの大好きなProxyじゃ。ただしGETのみ
- 7 :
- 君たちの大好きな?ということはここは厨房が対象の
スレなんですね。失礼させて頂きます。
- 8 :
- $1 = head("Agent: NTTDoKyuMo/427/31\n");
- 9 :
- >>7
ここは別に厨対象じゃねーぞ。
3とかのアホ向け(藁
- 10 :
- >>6さん
初心者なのでちょっとわからないのですが、#!/usr/local/bin/perl〜
で続く行がホスト名なのでしょうか?IEだと文字数オーバーしてしまい、
入らないのですが・・・。あとポート番号はデフォルトの8080でしょうか?
- 11 :
- >>10
あんた何?
- 12 :
- ちゃんとネタで返してやれよ
つーかこんな時間なのに人いるね
- 13 :
- 居るときは居る。
- 14 :
- >>10
それはホスト名ではなくProxyのプログラム自体だ。
たとえばこれをprx.plという名前で保存してUNIXやActivePerlの
導入された環境下においてコマンドプロンプトから
A:\>Perl prx.pl
ちなみにこの場合Proxyのホスト名は君が診断君などのページへ逝ったとき
REMOTE_HOSTとして表示されている変数に入っている。ポート番号は80だ。
わかったかな、>>10よ
- 15 :
- うちのケーブル回線で56Kbps回線をシミュレートする必要が
あったから回線遅くするためのプロクシスクリプトは書いたな。
まあソケットから読み込むバッファサイズとスリープする秒数を
調整してselect挟むだけだけど。
普通のプロクシスクリプトも作ったけど、ただ単にHTTP1.0で
GET、POSTのみなら簡単なんだけど、HTTP1.1サポートするのが鬼の
ように面倒だったからやめたよ。httpsもあるし。使用用途はリクエストと
レスポンス(ヘッダだけじゃなく内容も)を全て記録したかったのと、
HTMLのフィルタリング、あとはハニーポットに使ったぐらいかな。
漏れはuse Socketだけでガリガリ書いてたから面倒に感じただけで、
他のモジュール使えば簡単にできんのかな。
- 16 :
- ネタに(略
- 17 :
- >あったから回線遅くするためのプロクシスクリプトは書いたな。
贅沢な悩みだな。しかしuse Socketだけで書くとは漢だな。
私も以前はuse Socketで最初から書いていたがだんだんConnectとListen
が定型文なのでサブルーチン化しちゃったのでuse IO::Socketと
変わらなくなったのでさっさと乗り換えた。
>HTMLのフィルタリング、あとはハニーポットに使ったぐらいかな。
なんかアホが引っかかったか?(藁
- 18 :
- どうでもいいけどHTTP 1.1でもっとも面倒なのはやっぱKeep-Aliveかの。
接続をcloseせずにwhileでループしてクリアしてるCGIを見たことあるけど
どうなのかな
- 19 :
- >>17
アホ引っ掛けるためじゃなく、CodeRedI〜III騒ぎの時だよ。
ちなみにHTMLのフィルタリングは一度全部バッファに読み込んで
からじゃないとHTMLいじれないんで、遅いからやめた。forkしないと
遅すぎ。
- 20 :
- >>17
あーなるほど。うちはファイアーウォールで中国鯖をカットしてたけど
それでもいくらかアタックがきたかな。アパッチなので無意味だけど(藁
最近はSELECT使うようになったけど、やっぱProxyにはfork使うべきじゃないかな
鯖系スクリプト一般に思うんだけど、プロセス数を少なくしようとしてSELECT
使うのはわかるけど、別スレッドに任せておいたほうがプログラム的に
すっきりするし、何より軽い感じがする。
- 21 :
- >>20
forkはDoSを招きかねない
って塩兄ちゃんが昨日の日記に書いてた気がする。
いや、そんだけ。
- 22 :
- あとは…Linux上で使うFlashGetもどきのスクリプトも書いたな。
リストファイル読み込んで任意の数に分割して平行でダウソ
する奴。リジューム付き。でももっと高機能な奴を発見した時点で
開発やめちゃったよ。CGIばっか仕事で作らされるとつまらなくなって
来るから、仕事してるフリをするために書いてたようなもんだし。
ところでPerlでRAWソケットって扱ったこと無いんだけど、なんか
楽ができるモジュールないのかな。さすがにガリガリ書くのは面倒。
まあ素直にCで書けって言われそうだけど。
- 23 :
- RAWソケットはSYN Floodを撃つなんていう厨房なプログラムしか
作ったことないのであまり大きな顔できんが・・・
http://9mm.com/philez/lego
とりあえずこの人のを参考に作ったよ
どっちかっていうとPerlの知識って言うよりIPの知識が必要だった。
- 24 :
- UNIX使いじゃないので私はよくわからないのだが、
PerlのRAWソケットもやっぱりRootじゃないと使えないのだろうか。
Cでは使えなかったような気がする。
あーなんかRAWソケットというとステルスポートスキャナとかSYN Floodとか
厨なものしか作ってない。鬱
生ソケット使って実用的なものって作れるんかいな?
- 25 :
- >>23
お、貴重なサンプルスクリプトをありがとう。
でもやっぱりガリガリ書くのか(w
ちょっとARPを弄りたいんで色々やってみるよ。
まあ仕事のフリをしながら書くんだけどね
- 26 :
- >>20
selectよりforkが軽いというのは錯覚では?
- 27 :
- >>24
Socket自体をrootでないと使えないということはない。
一般ユーザーに制限がかかるのはbindできるportナンバー。
- 28 :
- >>27
いや、RAWの話でしょ。普通はスーパーユーザー
じゃないと使えないと思うけど。
- 29 :
- >>22
Net::RawIPはどうか。サンプルスクリプトもいくつか付いてるし。
一部の人が喜びそうなlandとかoshareのサンプルもあり(w
関係ないけどNet::Pcapも楽ができる
- 30 :
- >>26
いや、サーバー側じゃなくてクライアント側がね。
確かにサーバー側は重いかもしれんが所詮Perl串なんて不特定多数に
公開するものでもないのでforkを私はお勧めする。
>>22
名前からして便利そうな感じだがとりあえずオフィシャルサイト覗いてみると落ちてた(汗
とりあえず情報サンクス
http://quake.skif.net/RawIP/
- 31 :
- ひさびさの有意義スレあげ
- 32 :
- >Net::RawIP
oshareパケット、LAN内のWin98に向けてで実行してみたらまじでクラッシュしたよ(汗
98SEなら大丈夫なのかな?
それよりもtracerouteを生パケットレベルからやってるとこには感動
open( TR,"/usr/bin/traceroute $host" );
print while <TR>;
close( TR );
これだけで済むといえば済むのだが自分で1から作ってみるのも結構面白い。
なんかRAW SOCKETにはまりそうだ。
- 33 :
- 以前はモジュール使わずにsocketで直接作ってたけど、最近は堕落してIO::Socketばっかだ。
>>18 コマンドパイプライニングが面倒。Keep-Alive許されるか否かがやってみないと判らないとい
うのは実装考えてつくった規格とは思えない。
- 34 :
- 関係ないけどNet::Tracerouteってのもあるよ
- 35 :
- use Socket6はどうよ。 …どうもこうも無いけど
- 36 :
- 毒デムパが使える。
- 37 :
- IO::Socketを使うと堕落した感じがするのはなぜだろう。
・・・単に労力の差か。
>>33
リクエストのパイプライン化は確かに面倒だが、Keep-Aliveが実現できているサーバーなら、
リソースを取得してクライアントへの送信のみを行う子プロセスをつくって
親プロセスはリクエストを受け取り専門になって子プロセスにどんどん指示を出していき、
タスクリストを追加していく、という方法でRないかな。
ただその場合子プロセスのリソース取得方法もKeep-AliveをサポートしないとRない
と考えると多少鬱になる。これぐらいはHTTP1.0で許してもらおう(笑
- 38 :
- なんかスレも下がってきてマターリ語れるのはよいが
さびしくなってきたな(藁
- 39 :
- >>24
うぃraw_socketはrootじゃないと起こられる。Win32は関係ないけど。
raw_socket周りで面白かったのはicmp-echoとreplyでファイル転送ツールを作った時。
pingが通ればファイル転送可能!
でも激オソ。バグ多数(涙)
- 40 :
- >>39
pingでファイル転送デスカ・・・。おつかれさん。
私はUDPファイル転送なんて作ったことあるけど分割パケットを受信側で組み立てる
作業が難しかったね。LAN内では別にエラー訂正なんて要らないほど正確だったけど
インターネットに持ち出すとパケットの死ぬこと死ぬこと(藁
- 41 :
- たまにはageてみませう
- 42 :
- >>39
そのツールいい、面白そうだ。俺も今度暇つぶしに作ろっと。
役に立たないけど(w
- 43 :
- raw socketでIPMessengerを… (以下自粛)
>>33
Keep-Aliveなサーバでも勝手に切ってくる時もあったり…
- 44 :
- PerlDuke下さい
- 45 :
- >>44
#!/usr/local/bin/perl
while(1){if(fork()==0){while(1){print "R\n";}}}
ほれ
- 46 :
- google なんかを利用する
スクリプトを書くにはどうしたらいいんですか?
- 47 :
- #!perl
use Google;
$g = new Google(lang => 'ja');
$rh = $g->request('ほげ!');
while($r = $rh->fetch){
print "URI:", $r->uri, "\n";
}
__END__
…とかな(うそ
まぁお前、>>46はLWPでも調べなさいってこった。
- 48 :
- >>47の仕様書にあわせてGoogle.pmを作ってみた。
暇だなぁ。
http://gikotk.tripod.co.jp/dust/Google.pm
use IO::Socketしてるのはやはりヘタレか?
- 49 :
- 言ってみるもんだなぁ。サンクス!
- 50 :
- >>48
お、あんたギコTkの作者かい。PerlでGUIとは熱いね。
- 51 :
- >>48
ワラタ
折角だから遊ばせてもらおう。
- 52 :
- ん〜む。思うように動かんなぁ。
ちょっと修正したけどけっこう途切れたり関連サイトのURIが取れなかったりする。
それにしてもGoogleのソースって読みづらいなぁ…。
- 53 :
- >>50
おう、別スレで頑張っておりますー。無駄に熱いぞ。
>>47
ほんとにうまく動かんねぇ、スマヌ。
いちお、こんなのもあるみたいだけど。(使ってないからよくわからん)
http://search.cpan.org/search?dist=WWW-Search-Google
- 54 :
- とりあえず修正・・・・
一応関連サイトが取れてごみも混ざらないように見えるがよくわからん。
HTTPとして間違ったヘッダを送ってるのは秘密だ。
- 55 :
- 616765a
- 56 :
- 放置してたのにあがってるよ(藁)
ところでSocketとあまり関係無いけど、CGI串作るとき、
みんなURLの分解はどうしてるのかな?
$url = "http://pc.2ch.net/php/index.htm";
$dir = $url;
$dir =~ s!http://!!;
( $host, $port ) = split( /\//, $dir );
$dir =~ s/$host//;
こんな風にしてるんだけど正規表現だけでできそうな気が。
- 57 :
- my ($host, $port, $file) = ($uri =~ m!http://([^:/]+)(?::(\d+)?(.+)!);
$portにundefだか0だかが入るのを気にしなければ1行。
- 58 :
- じゃあ気にする時は $port ||= 80; とか追加すればいいのね
- 59 :
- >>57
さんきゅー
ていうか難しく考えること無かったのね。
PORTの処理は単に別にすればよいと
- 60 :
- URIの分解は、素直にURI.pm使ってるよ。楽チン。
- 61 :
- age
- 62 :
- インタープリタ言語でモジュールを必要以上に使いまくる漢がいるな
- 63 :
- >>62
楽したいからperl使うんだろ。
- 64 :
- 接続先のサーバが落ちてたりすると1分ぐらい放置されるんだけど、
反応が10秒間なかったら受信待ちを止めるとかはできませんか?
- 65 :
- >64
シグナル・アラームを使えよ! 使えない環境なのか? どうなんだよ、
ハッキリしろよ、このチンカスがっ!
- 66 :
- alarm()は使えます。
whileで複数のファイルを順番に読み込みたいのですが、
1つ目のファイルで$SIG{'ALRM'}の処理をすると、
そこで終了してしまいます。
終わらせずに次のファイルを読み込ませることは可能ですか?
- 67 :
- >66
どういうコードを書けばそうなるんだ! 答えてみろよ! またシカトかよ!
ハッキリしろよ、このウンスジがっ!
- 68 :
- http://search.cpan.org/search?dist=Net-MySQL
MySQLをIO::Socketで直接操作。。。
これってCGI-MLとかに出てくる人?
- 69 :
- >>68
そうだよ。
CGI-MLよりperl-ooのがしっくりくるけど。
- 70 :
- てゆうか、DBI-JPが初出じゃないのか。
- 71 :
- >>70
今は亡きPerl-Win32-Jじゃないっけ?
これまた今は亡きスリーウェブの人だった頃に
見かけはじめたような気がする。
最近のシグネチャででてるPerlのYahooメッセンジャーも
IO::Socketネタだね。
http://ymca.infoware.ne.jp/?browse=ProductInfo
ヤフー的にアリなのかこーいうの???
- 72 :
- test
- 73 :
- hoge
- 74 :
- 移転先の鯖から読めんぜ。
- 75 :
- bindで名前をつけようとすると
permissionが許可されてないとでるのはなぜ?
念の為にソース
my ($myport) = @_;
my $proto = getprotobyname('udp');
socket(Sock, &AF_INET, &SOCK_DGRAM, $proto) || die "socket: $!";
if($^O ne 'MacOS'){
setsockopt(Sock, SOL_SOCKET, SO_BROADCAST, 1)|| die "setsockopt: $!";
}
my $this = &sockaddr_in( $myport, &INADDR_ANY() );
bind(Sock, $this) || die "bind(syslog): $!";
- 76 :
- http://yahooo.s2.x-beat.com/
- 77 :
- なんでこんなモジュール1つのために単発スレ立ててるの?
- 78 :
- >>こんなモジュール1つのため
厨房にとっては他のモジュールより100倍大事なんだよ
- 79 :
- こんなモジュール使わなけりゃ2・3行で書けるのにねぇ。。。
- 80 :
- >>78
うっせーよw
Socketは楽しいじゃないか。厨房かも知れないけどさ・・・
- 81 :
- age
- 82 :
- (^^)
- 83 :
- (^^)
- 84 :
- age
- 85 :
- (^^)
- 86 :
- ∧_∧
( ^^ )< ぬるぽ(^^)
- 87 :
- age
- 88 :
- めんどくさそうだね
- 89 :
- ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
- 90 :
- ∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
- 91 :
-
__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
- 92 :
- ∧_∧
( ^^ )< ぬるぽ(^^)
- 93 :
- ∧_∧ ∧_∧
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
- 94 :
- (⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
- 95 :
- Socketモジュールの説明してるところ全然無いね
- 96 :
- % perldoc -m Socket
- 97 :
- amd64 環境だと、alarm 使い終わった後に明示的に $SIG{ALRM} = "IGNORE"; しないと、SIGPIPE を吐き出しちゃうみたい。
- 98 :
- hoshu
- 99 :
- 2年半ぶりにage
- 100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
CGIで運営される2ちゃんねる (223)
Google App Engine for Python 6アプ目 (225)
PostWikiスレ 当ての無い旅路へ (216)
【V5計画】CAFEMILK SHOPPING CART V5 (111)
【Python】Webフレームワーク Djangoスレ Part2 (221)
他所のCookieを読み込みたいのですが (170)
--log9.info------------------
大山倍達 談 「日本人が勝つとクソーと思う」 (452)
剣道日本一の警察官が児童ポルノ違反で逮捕 (282)
●●●マイクタイソンvs八巻健二 (822)
「美味しんぼ」が路上戦闘マンガだったら (530)
●●● 極真は段位を金で売っていた その4 (224)
★ゼロレンジ★零距離戦闘術★コンバット★ (859)
極真手塚グループ仙台 (655)
【虎拳】上地流唐手のスレッド3【半硬軟】 (295)
●●● 急所ガラ空き極真カラテ その26 (170)
女性史上最強の剣道家 (175)
柳生心眼流 (582)
中学2012年武道必修化 (268)
フルコン式ローキックって喧嘩で使えるの? (682)
コツカケ(吊陰功)の技法を本気で研究するスレ (133)
【キャッチウエイト作戦】メイウェザーVSアルバレス3【大成功?】 (617)
重量級パワー系素人VSミニマム級ボクサー 喧嘩勝負11 (757)
--log55.com------------------
明日つーか寧ろ今日 免許証の更新行くんだが、何か注意事項みたいなのありゅ?(?_?) [577196281]
【速報】首里城火災現場付近のカメラに旭日旗のTシャツを着た不審な男性。門にはデニー知事などへ向けた抗議文も。 [182311866]
「さみしくないね」深すぎて69000いいね [856456236]
お前らいつから日本がもう駄目だと気付いた?ホルホルしてられるのかこんな国 [177654932]
メモリ、安くなりすぎる DDR4-3000 16GB×2枚が税込10,980円を記録 [402859164]
「身の丈」受験の実態が明らかに 英語民間試験、受験料51000円★2 [707116308]
【悲報】首里城からキムチの匂いがする二人組が逃走したらしい これ半分あそこの国じゃないか? [502016552]
「スピルバーグ」って映画史上最も偉大な監督なのに過小評価されすぎ。革新性、娯楽性、芸術性すべてを兼ね備えた完璧な監督だろ [738130642]
-