use Socket;について熱く語るスレ
- : use Socket; [] 02/03/10 01:50:Q1gcj2Im
- Perlの醍醐味であるSocketについて語ろうぜ
※質問は専用スレへ。CGI串ってどこ?といった類もお断り - : use Socket; [] 02/03/10 02:26:Q1gcj2Im
- といってもネタがないので一つソースでも乗っけてみるか
#!/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のみ - : nobodyさん [sage] 02/03/10 02:31ID:???
- 君たちの大好きな?ということはここは厨房が対象の
スレなんですね。失礼させて頂きます。 - : nobodyさん [sage] 02/03/10 02:33ID:???
- $1 = head("Agent: NTTDoKyuMo/427/31\n");
- : use Socket; [sage] 02/03/10 02:33ID:???
-
ここは別に厨対象じゃねーぞ。
3とかのアホ向け(藁 - : nobodyさん [sage] 02/03/10 02:40ID:???
- さん
初心者なのでちょっとわからないのですが、#!/usr/local/bin/perl〜
で続く行がホスト名なのでしょうか?IEだと文字数オーバーしてしまい、
入らないのですが・・・。あとポート番号はデフォルトの8080でしょうか? - : nobodyさん [sage] 02/03/10 02:41ID:???
-
あんた何? - : nobodyさん [sage] 02/03/10 02:42ID:???
- ちゃんとネタで返してやれよ
つーかこんな時間なのに人いるね - : nobodyさん [sage] 02/03/10 02:45ID:???
- 居るときは居る。
- : nobodyさん [sage] 02/03/10 02:51ID:???
-
それはホスト名ではなくProxyのプログラム自体だ。
たとえばこれをprx.plという名前で保存してUNIXやActivePerlの
導入された環境下においてコマンドプロンプトから
A:\>Perl prx.pl
ちなみにこの場合Proxyのホスト名は君が診断君などのページへ逝ったとき
REMOTE_HOSTとして表示されている変数に入っている。ポート番号は80だ。
わかったかな、よ - : nobodyさん [sage] 02/03/10 02:54ID:???
- うちのケーブル回線で56Kbps回線をシミュレートする必要が
あったから回線遅くするためのプロクシスクリプトは書いたな。
まあソケットから読み込むバッファサイズとスリープする秒数を
調整してselect挟むだけだけど。
普通のプロクシスクリプトも作ったけど、ただ単にHTTP1.0で
GET、POSTのみなら簡単なんだけど、HTTP1.1サポートするのが鬼の
ように面倒だったからやめたよ。httpsもあるし。使用用途はリクエストと
レスポンス(ヘッダだけじゃなく内容も)を全て記録したかったのと、
HTMLのフィルタリング、あとはハニーポットに使ったぐらいかな。
漏れはuse Socketだけでガリガリ書いてたから面倒に感じただけで、
他のモジュール使えば簡単にできんのかな。
- : nobodyさん [sage] 02/03/10 02:55ID:???
- ネタに(略
- : use Socket; [sage] 02/03/10 02:59ID:???
- >あったから回線遅くするためのプロクシスクリプトは書いたな。
贅沢な悩みだな。しかしuse Socketだけで書くとは漢だな。
私も以前はuse Socketで最初から書いていたがだんだんConnectとListen
が定型文なのでサブルーチン化しちゃったのでuse IO::Socketと
変わらなくなったのでさっさと乗り換えた。
>HTMLのフィルタリング、あとはハニーポットに使ったぐらいかな。
なんかアホが引っかかったか?(藁 - : use Socket; [sage] 02/03/10 03:01ID:???
- どうでもいいけどHTTP 1.1でもっとも面倒なのはやっぱKeep-Aliveかの。
接続をcloseせずにwhileでループしてクリアしてるCGIを見たことあるけど
どうなのかな - : nobodyさん [sage] 02/03/10 03:01ID:???
-
アホ引っ掛けるためじゃなく、CodeRedI〜III騒ぎの時だよ。
ちなみにHTMLのフィルタリングは一度全部バッファに読み込んで
からじゃないとHTMLいじれないんで、遅いからやめた。forkしないと
遅すぎ。 - : use Socket; [sage] 02/03/10 03:08ID:???
-
あーなるほど。うちはファイアーウォールで中国鯖をカットしてたけど
それでもいくらかアタックがきたかな。アパッチなので無意味だけど(藁
最近はSELECT使うようになったけど、やっぱProxyにはfork使うべきじゃないかな
鯖系スクリプト一般に思うんだけど、プロセス数を少なくしようとしてSELECT
使うのはわかるけど、別スレッドに任せておいたほうがプログラム的に
すっきりするし、何より軽い感じがする。 - : nobodyさん [sage] 02/03/10 03:21ID:???
-
forkはDoSを招きかねない
って塩兄ちゃんが昨日の日記に書いてた気がする。
いや、そんだけ。 - : nobodyさん [sage] 02/03/10 03:23ID:???
- あとは…Linux上で使うFlashGetもどきのスクリプトも書いたな。
リストファイル読み込んで任意の数に分割して平行でダウソ
する奴。リジューム付き。でももっと高機能な奴を発見した時点で
開発やめちゃったよ。CGIばっか仕事で作らされるとつまらなくなって
来るから、仕事してるフリをするために書いてたようなもんだし。
ところでPerlでRAWソケットって扱ったこと無いんだけど、なんか
楽ができるモジュールないのかな。さすがにガリガリ書くのは面倒。
まあ素直にCで書けって言われそうだけど。 - : use Socket; [sage] 02/03/10 03:35ID:???
- RAWソケットはSYN Floodを撃つなんていう厨房なプログラムしか
作ったことないのであまり大きな顔できんが・・・
ttp://http://9mm.com/philez/lego
とりあえずこの人のを参考に作ったよ
どっちかっていうとPerlの知識って言うよりIPの知識が必要だった。 - : use Socket; [sage] 02/03/10 03:38ID:???
- UNIX使いじゃないので私はよくわからないのだが、
PerlのRAWソケットもやっぱりRootじゃないと使えないのだろうか。
Cでは使えなかったような気がする。
あーなんかRAWソケットというとステルスポートスキャナとかSYN Floodとか
厨なものしか作ってない。鬱
生ソケット使って実用的なものって作れるんかいな? - : nobodyさん [sage] 02/03/10 03:40ID:???
-
お、貴重なサンプルスクリプトをありがとう。
でもやっぱりガリガリ書くのか(w
ちょっとARPを弄りたいんで色々やってみるよ。
まあ仕事のフリをしながら書くんだけどね
- : nobodyさん [sage] 02/03/10 13:52ID:???
-
selectよりforkが軽いというのは錯覚では?
- : nobodyさん [sage] 02/03/10 13:59ID:???
-
Socket自体をrootでないと使えないということはない。
一般ユーザーに制限がかかるのはbindできるportナンバー。
- : nobodyさん [sage] 02/03/11 09:25ID:???
-
いや、RAWの話でしょ。普通はスーパーユーザー
じゃないと使えないと思うけど。 - : nobodyさん [sage] 02/03/11 12:03ID:???
-
Net::RawIPはどうか。サンプルスクリプトもいくつか付いてるし。
一部の人が喜びそうなlandとかoshareのサンプルもあり(w
関係ないけどNet::Pcapも楽ができる - : use Socket; [sage] 02/03/11 19:29ID:???
-
いや、サーバー側じゃなくてクライアント側がね。
確かにサーバー側は重いかもしれんが所詮Perl串なんて不特定多数に
公開するものでもないのでforkを私はお勧めする。
名前からして便利そうな感じだがとりあえずオフィシャルサイト覗いてみると落ちてた(汗
とりあえず情報サンクス
ttp://http://quake.skif.net/RawIP/
- : nobodyさん [] 02/03/11 19:48:lmK+A0LG
- ひさびさの有意義スレあげ
- : use Socket; [sage] 02/03/11 20:50ID:???
- >Net::RawIP
oshareパケット、LAN内のWin98に向けてで実行してみたらまじでクラッシュしたよ(汗
98SEなら大丈夫なのかな?
それよりもtracerouteを生パケットレベルからやってるとこには感動
open( TR,"/usr/bin/traceroute $host" );
print while <TR>;
close( TR );
これだけで済むといえば済むのだが自分で1から作ってみるのも結構面白い。
なんかRAW SOCKETにはまりそうだ。
- : nobodyさん [] 02/03/11 21:57:m0K7iM7P
- 以前はモジュール使わずにsocketで直接作ってたけど、最近は堕落してIO::Socketばっかだ。
コマンドパイプライニングが面倒。Keep-Alive許されるか否かがやってみないと判らないとい
うのは実装考えてつくった規格とは思えない。
- : nobodyさん [sage] 02/03/11 22:04ID:???
- 関係ないけどNet::Tracerouteってのもあるよ
- : nobodyさん [sage] 02/03/11 22:06ID:???
- use Socket6はどうよ。 …どうもこうも無いけど
- : nobodyさん [] 02/03/11 22:09:Nq6ZCTrF
- 毒デムパが使える。
- : use Socket; [sage] 02/03/12 00:43ID:???
- IO::Socketを使うと堕落した感じがするのはなぜだろう。
・・・単に労力の差か。
リクエストのパイプライン化は確かに面倒だが、Keep-Aliveが実現できているサーバーなら、
リソースを取得してクライアントへの送信のみを行う子プロセスをつくって
親プロセスはリクエストを受け取り専門になって子プロセスにどんどん指示を出していき、
タスクリストを追加していく、という方法で逝けないかな。
ただその場合子プロセスのリソース取得方法もKeep-Aliveをサポートしないと逝けない
と考えると多少鬱になる。これぐらいはHTTP1.0で許してもらおう(笑
- : use Socket; [sage] 02/03/12 18:53ID:???
- なんかスレも下がってきてマターリ語れるのはよいが
さびしくなってきたな(藁 - : nobodyさん [sage] 02/03/12 19:08ID:???
-
うぃraw_socketはrootじゃないと起こられる。Win32は関係ないけど。
raw_socket周りで面白かったのはicmp-echoとreplyでファイル転送ツールを作った時。
pingが通ればファイル転送可能!
でも激オソ。バグ多数(涙) - : use Socket; [sage] 02/03/12 19:38ID:???
-
pingでファイル転送デスカ・・・。おつかれさん。
私はUDPファイル転送なんて作ったことあるけど分割パケットを受信側で組み立てる
作業が難しかったね。LAN内では別にエラー訂正なんて要らないほど正確だったけど
インターネットに持ち出すとパケットの死ぬこと死ぬこと(藁
- : use Socket; [] 02/03/12 19:40:YB/JsQLE
- たまにはageてみませう
- : nobodyさん [sage] 02/03/12 21:47ID:???
-
そのツールいい、面白そうだ。俺も今度暇つぶしに作ろっと。
役に立たないけど(w - : nobodyさん [sage] 02/03/12 23:08ID:???
- raw socketでIPMessengerを… (以下自粛)
Keep-Aliveなサーバでも勝手に切ってくる時もあったり… - : nobodyさん [sage] 02/03/13 00:19ID:???
- PerlDuke下さい
- : nobodyさん [sage] 02/03/13 00:22ID:???
-
#!/usr/local/bin/perl
while(1){if(fork()==0){while(1){print "氏ね\n";}}}
ほれ
- : nobodyさん [sage] 02/03/13 03:21ID:???
- google なんかを利用する
スクリプトを書くにはどうしたらいいんですか?
- : nobodyさん [sage] 02/03/13 09:56ID:???
- #!perl
use Google;
$g = new Google(lang => 'ja');
$rh = $g->request('ほげ!');
while($r = $rh->fetch){
print "URI:", $r->uri, "\n";
}
__END__
…とかな(うそ
まぁお前、はLWPでも調べなさいってこった。 - : nobodyさん [sage] 02/03/13 13:38ID:???
- の仕様書にあわせてGoogle.pmを作ってみた。
暇だなぁ。
ttp://http://gikotk.tripod.co.jp/dust/Google.pm
use IO::Socketしてるのはやはりヘタレか? - : 46 [sage] 02/03/13 17:03ID:???
- 言ってみるもんだなぁ。サンクス!
- : use Socket; [sage] 02/03/13 17:45ID:???
-
お、あんたギコTkの作者かい。PerlでGUIとは熱いね。
- : 47 [sage] 02/03/13 17:59ID:???
-
ワラタ
折角だから遊ばせてもらおう。 - : 47 [sage] 02/03/13 19:06ID:???
- ん〜む。思うように動かんなぁ。
ちょっと修正したけどけっこう途切れたり関連サイトのURIが取れなかったりする。
それにしてもGoogleのソースって読みづらいなぁ…。
- : 48 [sage] 02/03/13 20:01ID:???
-
おう、別スレで頑張っておりますー。無駄に熱いぞ。
ほんとにうまく動かんねぇ、スマヌ。
いちお、こんなのもあるみたいだけど。(使ってないからよくわからん)
ttp://http://search.cpan.org/search?dist=WWW-Search-Google - : 48 [sage] 02/03/13 20:22ID:???
- とりあえず修正・・・・
一応関連サイトが取れてごみも混ざらないように見えるがよくわからん。
HTTPとして間違ったヘッダを送ってるのは秘密だ。 - : nobodyさん [] 02/03/26 00:11:AmQVaL8y
- 616765a
- : use Socket; [sage] 02/03/26 02:41ID:???
- 放置してたのにあがってるよ(藁)
ところでSocketとあまり関係無いけど、CGI串作るとき、
みんなURLの分解はどうしてるのかな?
$url = "ttp://pc.5ch.net/php/index.htm">ttp://pc.2ch.net/php/index.htm";
$dir = $url;
$dir =~ s!ttp://http://!!;
( $host, $port ) = split( /\//, $dir );
$dir =~ s/$host//;
こんな風にしてるんだけど正規表現だけでできそうな気が。 - : nobodyさん [sage] 02/03/26 11:44ID:???
- my ($host, $port, $file) = ($uri =~ m!ttp://http://([^:/]+)(?::(\d+)?(.+)!);
$portにundefだか0だかが入るのを気にしなければ1行。 - : nobodyさん [sage] 02/03/26 17:40ID:???
- じゃあ気にする時は $port ||= 80; とか追加すればいいのね
- : use Socket; [sage] 02/03/26 18:17ID:???
-
さんきゅー
ていうか難しく考えること無かったのね。
PORTの処理は単に別にすればよいと - : nobodyさん [sage] 02/03/27 11:02ID:???
- URIの分解は、素直にURI.pm使ってるよ。楽チン。
- : nobodyさん [] 02/03/29 18:33:dJEnZQgW
- age
- : [] 02/03/31 17:15:+CJv1xys
- インタープリタ言語でモジュールを必要以上に使いまくる漢がいるな
- : nobodyさん [sage] 02/03/31 18:28ID:???
-
楽したいからperl使うんだろ。 - : [] 02/04/06 03:00:Q2ecuzSu
- 接続先のサーバが落ちてたりすると1分ぐらい放置されるんだけど、
反応が10秒間なかったら受信待ちを止めるとかはできませんか? - : nobodyさん [sage] 02/04/06 06:28ID:???
- >64
シグナル・アラームを使えよ! 使えない環境なのか? どうなんだよ、
ハッキリしろよ、このチンカスがっ!
- : 64 [] 02/04/06 22:33:ZVzzBO7a
- alarm()は使えます。
whileで複数のファイルを順番に読み込みたいのですが、
1つ目のファイルで$SIG{'ALRM'}の処理をすると、
そこで終了してしまいます。
終わらせずに次のファイルを読み込ませることは可能ですか? - : nobodyさん [sage] 02/04/07 02:50ID:???
- >66
どういうコードを書けばそうなるんだ! 答えてみろよ! またシカトかよ!
ハッキリしろよ、このウンスジがっ!
- : nobodyさん [] 02/04/07 05:30:0gb5rv3T
- ttp://http://search.cpan.org/search?dist=Net-MySQL
MySQLをIO::Socketで直接操作。。。
これってCGI-MLとかに出てくる人? - : nobodyさん [sage] 02/04/07 05:53ID:???
-
そうだよ。
CGI-MLよりperl-ooのがしっくりくるけど。 - : nobodyさん [sage] 02/04/07 10:05ID:???
- てゆうか、DBI-JPが初出じゃないのか。
- : nobodyさん [sage] 02/04/09 03:39ID:???
-
今は亡きPerl-Win32-Jじゃないっけ?
これまた今は亡きスリーウェブの人だった頃に
見かけはじめたような気がする。
最近のシグネチャででてるPerlのYahooメッセンジャーも
IO::Socketネタだね。
ttp://http://ymca.infoware.ne.jp/?browse=ProductInfo
ヤフー的にアリなのかこーいうの??? - : nobodyさん [sage] 02/04/30 21:03ID:???
- test
- : nobodyさん [sage] 02/05/01 06:52ID:???
- hoge
- : nobodyさん [sage] 02/07/16 22:48ID:???
- 移転先の鯖から読めんぜ。
- : socket初心者 [] 02/10/04 05:19:EErsm4Mz
- 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): $!";
- : n [] 02/10/04 05:52:ixFnVKaB
- ttp://http://yahooo.s2.x-beat.com/
- : nobodyさん [sage] 02/10/04 12:54ID:???
- なんでこんなモジュール1つのために単発スレ立ててるの?
- : ◆U5598YGuzE [sage] 02/10/04 12:56ID:???
- >>こんなモジュール1つのため
厨房にとっては他のモジュールより100倍大事なんだよ
- : nobodyさん [sage] 02/10/04 12:59ID:???
- こんなモジュール使わなけりゃ2・3行で書けるのにねぇ。。。
- : use Socket; [] 02/12/17 21:53:+/VfoKAG
-
うっせーよw
Socketは楽しいじゃないか。厨房かも知れないけどさ・・・ - : nobodyさん [] 02/12/24 17:17:2kS8TiT1
- age
- : 山崎渉 [(^^)sage] 03/01/15 13:40ID:???
- (^^)
- : 山崎渉 [(^^)] 03/03/13 17:41ID:???
- (^^)
- : nobodyさん [] 03/04/17 10:19:GlJoeOTi
- age
- : 山崎渉 [(^^)] 03/04/17 11:57ID:???
- (^^)
- : 山崎渉 [(^^)sage] 03/04/20 06:27ID:???
- ∧_∧
( ^^ )< ぬるぽ(^^) - : nobodyさん [] 03/04/26 15:16:z2X+CXJ9
- age
- : nobodyさん [sage] 03/04/26 16:25ID:???
- めんどくさそうだね
- : 山崎渉 [(^^)] 03/05/22 02:07ID:???
- ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
- : 山崎渉 [(^^)] 03/05/28 17:18ID:???
- ∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉 - : 山崎 渉 [(^^)] 03/07/15 11:16ID:???
-
__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄ - : 山崎 渉 [(^^)sage] 03/08/02 02:35ID:???
- ∧_∧
( ^^ )< ぬるぽ(^^) - : ぼるじょあ ◆ySd1dMH5Gk [(^^)] 03/08/02 05:15ID:???
- ∧_∧ ∧_∧
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ - : 山崎 渉 [(^^)] 03/08/15 23:04ID:???
- (⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン - : nobodyさん [] 04/06/02 23:56:RiFz2Frq
- Socketモジュールの説明してるところ全然無いね
- : nobodyさん [sage] 04/06/03 00:08ID:???
- % perldoc -m Socket
- : nobodyさん [] 04/07/23 22:27:28JcNBl1
- amd64 環境だと、alarm 使い終わった後に明示的に $SIG{ALRM} = "IGNORE"; しないと、SIGPIPE を吐き出しちゃうみたい。
- : nobodyさん [sage] 04/12/22 18:58:48ID:???
- hoshu
- : nobodyさん [] 2007/07/04(水) 23:17:40:/v4FuUdg
- 2年半ぶりにage
- : nobodyさん [sage] 2007/09/26(水) 12:31:28ID:???
-
- : nobodyさん [sage] 2008/12/24(水) 01:35:52ID:???
- ソケットはいいよね・・・
- : 電脳プリオン [sage] 2011/12/11(日) 22:18:01.05ID:???
-
∧_∧
( ・∀・) | | ガガッ
と ) | |
Y /ノ .人
/ ) .人 < >_∧∩
_/し' < >_∧∩`Д´)/
(_フ彡 V`Д´)/ / ←
/ ← - : nobodyさん [] 2013/04/02(火) 16:25:44.30:zXz89sBa
- _
|O\
| \ キリキリ
∧|∧ \ キリキリ
ググゥ>(;⌒ヽ \
∪ | (~)
∪∪ γ´⌒`ヽ
) ) {i:i:i:i:i:i:i:i:}
( ( ( ´・ω・)、
(O ⌒ )O
⊂_)∪ - : nobodyさん [sage] 2017/06/19(月) 02:19:54.16ID:???
- パイオツもませろ
- : nobodyさん [] 2017/12/30(土) 12:46:23.50:YhlYw6jg
- 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
MSFB9JBFN5
凡例:
レス番
100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている
名前
名無しさん (青) → sage のレス
名無しさん (緑) → age のレス
ID
ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID
このページは2ch勢いランキングが作成したキャッシュです。元のページはこちら。削除についてはこちら。