- 締切済み
SocketでPOPサーバーから受けた情報をWhile文で受け取れない
SocketでPOP3サーバーにアクセスして、コマンドを 送った際の戻り値を変数に代入したいのですが、 下記の方法でうまくいきません。 While(<Socket>) { push(@test,$_); } print"@test"; telnetを使ってそのPOP3サーバーにアクセスすると 正常にアクセスしてログイン後メール内容を見る ことができます。While文がうまく動作していない みたいなのですが・・・。 ブラウザがずっとアクセスしてて画面が表示されません。 WinXP, Apache, Perl5.8.4 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- pop3サーバーについて教えてください。
sendmailのインストールされているLINUX9(REDHAT) で、popサーバーを使いたくってqpopperをインストールしたのですが、telnetでテストするとuserはOKになるのですが、passが通りません。 -ERR BAD login となります。 どこがいけないのでしょうか? どなたか教えていただけませんか? ./configure --enable-specialauth でコンパイルしてます。
- ベストアンサー
- その他(インターネット・Webサービス)
- POP3の認証ができません・・・。
ネットワークの勉強をしています。クライアントとサーバーを作り、SMTPとPOP3の勉強をしています。Becky!というメールソフトでテスト用の自分のアカウントとPasswordを作って、サーバーでAPOPを設定し、クライアントのコマンドプロンプトからtelnetでサーバーにつなぎ、POPコマンドの"USER"(自分設定したアカウント)を入力しOKが出ます。その後"Pass"(自分で設定したPassword)を入力すると、エラーメッセージがでます。 原因はAPOPのセキュリティが働いて自分が登録したPasswordが暗号化されたからだと思います。 (ちなみに"APOP"コマンドでも同様のエラーです) APOPを設定したまま、telnetでPOP3の認証を行う事は出来ないのでしょうか?どなたか教えてください。
- ベストアンサー
- その他(メールサービス・ソフト)
- perl while pushで条件が無かったら0
恐れ入ります。perlで、 push@list,$1 while $body=~s!<div>(.*?)</div>!!; として(.*?)部分を抜き出して@listを作成していますが、 <div>(.*?)</div>が存在しない、つまり条件に合致しない場合は0を代入したいのですが、どのようにすればよいでしょうか。よろしくお願いいたします。
- ベストアンサー
- Perl
- Socketによるデータ読み出しについての疑問
horagaiです。お世話になっております。 socketを使ってWebサーバーからHTTPでファイルを取得するスクリプトを組んでいます。 (1) while(<SOCK>){ push(@Data,$_); } というルーチンでソケットハンドル<SOCK>から読み出したデータをリスト@Dataに入れています。 ここで読み出すのがテキストファイルなら、ファイルデータが終了した時点でちゃんとWhileループが終了するのですが、GIF,JPEGのようなバイナリーファイルの場合、あるいはテキストファイルでも一番最後の行に改行コードが入っていない場合、ループが終了してくれません。どうやってデータの終了を確認してwhileループを終了したら良いでしょうか。 (2) こうやって取得したファイルデータを print @Data ; で表示させると、各行の先頭に半角スペースが入ってしまいます。これはpushかsocketの仕様によるものでしょうか。それとも私がどこかでミスをやっているのでしょうか。 Perlのバージョンは 5.004_04 OSはLinuxです。よろしくお願いします。
- 締切済み
- Perl
- サーバー(WinXP pro)にApacheとPHPを入れました。
サーバー(WinXP pro)にApacheとPHPを入れました。 スクリプトを作成して、クライアントからTelnetで実行したいのですが、 Telnetでサーバにアクセスできません。 クライアントからTeratermを使用して接続を試みていますが、 ID・Passwordを聞かれます。 これは何を入れれば良いのでしょうか? 気付かずにどこかで設定しているのでしょうか? サーバーのアカウントにはパスワード設定をしていません。 [サーバー] OS:WinXp Pro Sp3 [クライアント] OS:WinXp Pro Sp3
- 締切済み
- オープンソース開発
- 標準入力からのwhile文
TERATERMをつかっていますが、しばらくアクセスしないと接続をきられてしまうホストがあるのですが、サーバの設定を変えずに手軽に抑止する方法はないでしょうか? 1分おきに何かを出力するようなコマンドを実行しようかと考えたのですが、 while文の書き方がcshとは違うみたいで、 $ while(1) > date > sleep 60 >end などとしても>から抜けてくれないのですが、どうしたらよいのでしょう。 また、根本的にこの方法では抑止できないよ、 などありましたら教えていただけると助かります。 よろしくお願いいたします。
- ベストアンサー
- その他(OS)
- perlでtelnetクライアント
perlで、ソケットを使って、telnet(ポート23)クライアントを作ろうと思いました。 telnet接続すると、まず最初にサーバー側から"login: "とプロンプトが出力されるので、それを読もうとしたところ、プロンプトなので改行が来ないためか、待ち状態になりました。 while(<socket>) print $_; while(read(socket, $c, 1) print $c; の2パターン試しましたが、どちらも1文字も読めませんでした。 改行が来なくても、読込みができるテクニックはありますでしょうか。 perlのスキルは、他人のを参考にしないと作れない程度の素人同然です。 よろしくお願いします。
- ベストアンサー
- Perl
- SOCKETで入手したデータを抜き出したい
他サーバのHTMLから部分的に抜き出したいと思っています。 他サーバのHTMLを表示する所までは出来たのですが、抜き出す所が出来ずに困っています。 私が抜き出そうと、表示のwhile文内を下記に変えた所、何も表示されなくなりました。 if( $_ =~ m/抜き出したい頭のキーワード/ ){ $flag = 1;} if( $_ =~ m/表示したい尾のキーワード/ ){ $flag = 0;} if( $flag eq 1){ print $_;} このwhile文内には変数に代入するとどうもNGのようです。 教えてGooの過去ログにも同様の質問があったのですが、 解決に至っていませんでした。ご教示願います。 ↓現在のソースコード ---------------------------- #!/usr/local/bin/perl -w use strict; use Socket; # Socket モジュールを使う # 接続先ホスト名 my $host = 'www.xxxx.co.jp'; # HTTP プロトコルを使う my $port = getservbyname('http', 'tcp'); # ホスト名を、IP アドレスの構造体に変換 my $iaddr = inet_aton($host) or die "$host は存在しないホストです。\n"; # ポート番号と IP アドレスを構造体に変換 my $sock_addr = pack_sockaddr_in($port, $iaddr); # ソケット生成 socket(SOCKET, PF_INET, SOCK_STREAM, 0) or die "ソケットを生成できません。\n"; # 指定のホストの指定のポートに接続 connect(SOCKET, $sock_addr) or die "$host のポート $portに接続できません。\n"; # ファイルハンドル SOCKET をバッファリングしない select(SOCKET); $|=1; select(STDOUT); # WWW サーバに HTTP リクエストを送る print SOCKET "GET /index.html HTTP/1.0\r\n"; print SOCKET "\r\n"; # ヘッダ部分を受け取る while (<SOCKET>){ # 改行のみの行ならループを抜ける m/^\r\n$/ and last; } # ボディ部分を受け取り、表示 while (<SOCKET>){ print $_; }
- ベストアンサー
- Perl
- IO-Socketで…
最初に開かれた1つのソケットで、 サーバーから不定期に送られてくるデータを処理→表示しつつ、 ユーザーから入力があった場合にそのソケットへ送信するといったメッセンジャーを作ろうと思っているのですが、「入力待ちと受信待ちを同時に進める」という事がどうも上手くいってくれません… use threads;を使い、送信用・受信用と分けたのですが、やはりどちらか一方が止まってしまいます…。 どの様に書いたらよいのでしょうか… 何方かご教授下さい…。 use threads; use IO::Socket; ($test_socketを生成) sub send{ while($input = <STDIN>){ chomp($input); print $test_socket "$input"; } sub recv{ while(1){ if($receive = <$test_socket>){ print "$receive\n"; } } } my $sendthread = threads->new(\&send); $sendthread->join(); my $recvthread = threads->new(\&recv); $recvthread->join();
- 締切済み
- Perl
- Webサーバ名を知りたい【linuxコマンド】
linuxコマンドで、Webサーバ名を表示させるにはどうすれば良いでしょうか? 具体的には、あるサーバへtelnet接続して、何かコマンドを打って【Apache1.3】といった具合に表示させたいのですが、コマンドが解らず困っています。 申し訳ありませんが、どなたか御教授宜しくお願いします!
- ベストアンサー
- Linux系OS
- 中学生が月経周期の不安定さとおりものの異常について相談しています。生理が終わった6日後に再び生理が来たそうです。初めて生理がきたのは2年前で、周期が不安定であるということは考えにくいとのことです。通常は4日続き、5日目はおりもの程度の量しか出血しないようです。
- おりものの異常として、シャバシャバするような大量のおりものや、鼻水のような状態のおりものが出ることがあると述べています。原因は良く分からないとのことですが、ナプキンを変えるペースが遅いことから雑菌の繁殖が考えられるとも言及しています。
- 初めての経験であり、継続するようであれば母親に相談する考えも示しています。詳しい情報が不足しているが、追記する用意がある旨を伝えています。相談者は不安であり、回答を求めています。
お礼
ありがとうございます。そのサイトも見たのですが、条件を入れてもうまく動作しませんでした。 あきらめてPHPでやってみます。 ありがとうございました。