|
>>2359 kanji pcmciacs.3.1.30.tar.gz を展開した pcmciacs.3.1.30 以下のディレクトリ構造がソースツリーでは。 % cd pcmciacs.3.1.30.tar.gz ではなくて、 % cd pcmciacs.3.1.30 では? 〜.tar.gz は圧縮ファイルです。 cd は Change Directory です。 |
|
>>2360 ふくし > pcmciacs.3.1.30 以下のディレクトリ構造がソースツリーでは。 Linux も pcmcia も全然知りませんけど、 http://www.linux.or.jp/JF/JFdocs/PCMCIA-HOWTO-2.html などを見るに、カーネルソースを展開して、そこに pcmciacs*.tar.gz を 展開して、make config && make all && make install してモジュールを インストールすべきなのに、カーネルソースツリーが存在していないので エラーになってるんじゃないでしょうか。 >>2359 kanji > configエラーが出ます。 具体的にどういうエラーが出るかをちゃんと書けば、何が問題か わかる人にはわかるでしょう。 # 僕は残念ながら わからない人です。 |
|
>>2360 ふくし >>2361 68user すみません、わかりました。 ありがとうございました。 カーネルソースの展開が抜けているのでしょう。 早速やってみます。 |
|
初めまして、inabaと申します。 >>2359 kanji 3com だったら、ディフォルトで認識してくれると思いますが…。 ただ、network と pcmcia の起動順が逆なので失敗しているのかも。 # cd /etc/init.d # ./pcmcia restart # ./network restart と入力してみてください。 # ifconfig で、eth0 が認識されていませんか? 見当違いだったらすみません。 |
|
はじめまして、渡邊と申します。 ネットワークプログラムに興味があり、POP3 クライアントを作ってみよう(2)の POP3 クライアントサンプルを動作させてみました。 お聞きしたいのは、このままでちゃんとメールが表示されるプロバイダーと表示されないプロバイダーがあり、ニフティでは途中で固まってしまいます。認証までは動いているようで、LISTので止まっているようです。 どうすれば、いいか教えていただけませんか? |
|
>>2364 わたなべ > LISTので止まっているようです。 http://x68000.startshop.co.jp/~68user/net/sample/pop3-client.pl ですね? telnet で pop3 サーバと話してみるとどうなりますか? LIST 送信の後の while (<SOCKET>){ m/^\.\r\n$/ && last; を while (<SOCKET>){ print "[$_]"; m/^\.\r\n$/ && last; として実行すると何が表示されますか? Windows マシンで動かしていますか? (環境はちゃんと書きましょう) もしそうなら socket(SOCKET,PF_INET,SOCK_STREAM,0)|| die ... の後に binmode(SOCKET); という行を追加するとどうなりますか? |
|
はじめまして。いつも勉強させてもらっています。 >>2364 わたなべ > LISTので止まっているようです。 私も、pop3 クライアントを自作したときに、同じことを経験しました。 そのときは、pop3 サーバが NT で、 > +OK IMS POP3 Server 0.87 Ready というものだったのですが、 LIST の返事に、"." のみの行がなかったのです。 > +OK 0 message (0 octets) > 0 messages (0 octets) こんな感じでした。 |
|
>>2366 kuw >LIST の返事に、"." のみの行がなかったのです。 補足です。 その時は、LIST のかわりに STAT を使うようにして回避しました。 |
|
>>2365わたなべ 早速ありがとうございます。 試してみましたが、状況は変わりません。 環境は、Windows2000のクライアントで、サーバーはFreeBSDです。 telnet pop.nifty.com 110 USER ****** PASS ****** LIST とやる分には、NIFTYでもちゃんとリストされます。 print "[$_]";を追加してみると [+OK <**********> ][+OK ][+OK と表示されます。 print $_; にしてみると、 +OK <**********> +OK +OK で止まってしまいます。 いづれも、Ctrl+Cで終了しないと終わりません。 ところがiij4uでは、 +OK IIJ ************ +OK ************ +OK ************ +OK 5 messages**** と言う感じで正常に動いています。 尚、binmode(SOCKET);を追加してみても状況に変化はありません。 iij4uとNIFTYの差は、+OKの後にiij4uの方は文字があるのですが、NIFTYは何も無いことぐらいです。 att.ne.jpでも動きませんでした。 もちろんtelnetで直接タイプすればリストも問題ありません。 よろしくお願いします。 |
|
>>2364わたなべ kuwさんありがとうございます。 STATを使う件、本日世が明けたら試してみます。 ありがとうございます。 |
|
>>2366 kuw > LIST の返事に、"." のみの行がなかったのです。 >> +OK 0 message (0 octets) >> 0 messages (0 octets) なるほど。もう少し詳しくお聞かせ下さい。 それは mail box にメールがたまっていなかったときのみ . が ないのでしょうか? あるいはメールがたまっていても . がない のでしょうか? また、その POP3 サーバアプリケーションの名前は 何かわかりますか? ちなみに . をもってレスポンスの終了と見なしている根拠は http://ring.ip-kyoto.ad.jp/pub/doc/RFC/rfc1939.txt > When all lines of the response have been sent, a > final line is sent, consisting of a termination octet (decimal code > 046, ".") and a CRLF pair. > Examples: > C: LIST > S: +OK 2 messages (320 octets) > S: 1 120 > S: 2 200 > S: . です。 |
|
>>2370 68user >それは mail box にメールがたまっていなかったときのみ . が >ないのでしょうか? あるいはメールがたまっていても . がない >のでしょうか? メールがたまっていなかったときのみです。 メールがたまっているときは、 > +OK 1 messages (1146 octets) > 1 1146 > . となります。 >また、その POP3 サーバアプリケーションの名前は >何かわかりますか? EMWAC の IMS POP3 Server 0.87 です。 5, 6 年前に NT にインストールして以来、そのまま使っているので、 かなり古いものだと思います。 # この数年、NT を全くいじっていないので、最近の事情はわかりませんが・・・ >ちなみに . をもってレスポンスの終了と見なしている もちろん、これは正しい仕様だと思いますし、 同じ仕様の MUA やメールチェッカーも多いと思います。 |
|
>>2364わたなべ おはようございます。 昨日の続きですが、下記のようシンプルにしてテストしてみましたが、状況に変化はありませんでした。 よろしく御願いします。 --------------------------------------------- print SOCKET "USER $username\r\n"; print SOCKET "PASS $passwd\r\n"; print SOCKET "LIST\r\n"; while (<SOCKET>){ m/^\.\r\n$/ && last; print $_; } print SOCKET "QUIT\r\n"; --------------------------------------------- 上記の結果 ■AT&Tに接続した場合 +OK <283**.10082***86@mail.att.ne.jp> +OK +OK (ここで止まってしまうので Ctrl+C) ^C % ■iij4uに接続した場合 +OK IIJ POP3 Server (**.iij4u.or.jp) starting. <128**.1008***94@**.iij4u.or.jp> +OK Password required: ******@**.iij4u.or.jp +OK ******@**.iij4u.or.jp has 2 messages (2182 octets) +OK 2 messages (2182 octets) % ------------------------------------------------------------------------------- ■telnetでAT&Tに接続した場合 telnet ***.att.ne.jp 110 +OK <283**.10082***86@mail.att.ne.jp> USER ******** +OK PASS ******** +OK LIST +OK 1 958 2 960 . QUIT +OK ■telnetでiij4uに接続した場合 telnet **.iij4u.or.jp 110 +OK IIJ POP3 Server (**.iij4u.or.jp) starting. <128**.1008***94@**.iij4u.or.jp> USER ******** +OK Password required: ******@**.iij4u.or.jp PASS ******** +OK ******@**.iij4u.or.jp has 2 messages (2182 octets) LIST +OK 2 messages (2182 octets) 1 1090 2 1092 . QUIT +OK IIJ POP3 Server (w/mdir) (m-**.iij4u.or.jp) signing off |
|
>>2371 kuw ありがとうございます。ということは、その POP3 サーバのバグと 判断してもよいようですね。 >>2372 わたなべ では、残るは改行コードくらいですかね。 select(SOCKET); $|=1; select(STDOUT); $|=1; # 標準出力のバッファリングも OFF print SOCKET "USER $username\r\n"; print SOCKET "PASS $passwd\r\n"; print SOCKET "LIST\r\n"; while (sysread(SOCKET, $_, 1) ){ # read(2) を使って読む。 printf("$_ [%02X] ", unpack('c',$_)); } print SOCKET "QUIT\r\n"; を試して下さい。 |
|
>>2373わたなべ 試してみました。 +[2B] O [4F] K [20] ・・・・・・ [3E] [0D] + [2B] 0 [4F] K [4B] [20] [0D] + [2B] 0 [4F] K [4B] [20] [OA] で止まります。 NIFTYもAT&Tもこうした現象なのですが解決方法は無いものでしょうか? |
|
>>2374 わたなべ 接続時のリプライは +OK....\r USER に対するリプライは +OK \r PASS に対するリプライは +OK \n という変なサーバであることがわかります。 # このサーバは RFC1939 に準拠していないと思います。このサーバ # アプリの名前を教えていただけますか。 で、\r や \n だけでも行末と見なすように、 m/^\.\r\n$/ && last; を m/^\.(\r\n|\r|\n)$/ && last; として下さい (*A)。 で、これだけの対処では多分挙動は変わらないでしょう。 > [OA] で止まります。 ということは、相手が LIST に対するリプライをしていない、 つまり「LIST を受け取ったと解釈していない」ということなので、 やはり SOCKET がテキストモードになっており、 print SOCKET "LIST\r\n"; が print SOCKET "LIST\r\r\n"; となって送信されているのではないかと推測します。 *A の変更を行った上で、再度 binmode(SOCKET) を挿入してみて下さい。 # Windows には詳しくないのですが、これでよいんでしたっけ?>どなたか |
|
>>2375わたなべ 試してみましたが、状況は変わりませんでした。 AT&TにPOP3のアプリケーションを確認したところ、qmailだそうです。 サーバーのOSは、教えてくれませんでした。 よろしく御願いします。 |
|
初めまして。初めてなのに、こんな事を書くのはあつかましいとも思うんですけど、どうにもならないのでフ゜ロク゛ラムを教えて欲しいんです。 実は、課題がでたんですけど分からないので。 内容ですが Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、他のファイル(trans.c)に書き出す。 と言う物です。 それで、 #include <stdio.h> #include <stdlib.h> main(int argc, chr*argv[]) { int i; FILE *fin; char ss[256]; if(fin=fopen("sourse","r") == NULL){ printf("オーフ゜ン出来ない.\n"); exit(1); } char( までは出来ました。それから先が全くわかりませんので、宜しくお願いします! |
|
>>2373 68user >その POP3 サーバのバグ その通りです。 しかも、今回の件には、まるで関係ない話みたいですね。失礼しました。 >>2377 ARGUN >Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、他のファイル(trans.c)に書き出す。 ならば、 cat sourse.c | tr a-z A-Z > trans.c で良いのでは? |
|
>>2376 わたなべ > 試してみましたが、状況は変わりませんでした。 ほほぅ、そうですか。それは困りましたね。 > qmailだそうです。 qmail 付属の qmail-pop3d かな? djb モノがそんな挙動を するのはあまり考えにくいですが、telnet ではできている のですから、怪しいのは改行コードです。 現在は sysread で読んでいるのですから、受け取ったデータは 即座に表示されるはずです。ということは、何も表示されない= 送ったリクエストが正しく解釈されていないということなので、 print SOCKET "LIST\r\n"; を print SOCKET "LIST\n"; にしてみたり、いろいろ試してみて下さい。 どうにもならなかったら、試したスクリプトを見せて下さい。 >>2377 ARGUN > Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、 > 他のファイル(trans.c)に書き出す。 まずは、sourse.c の内容を trans.c にコピーするところから やってみては。 |
|
>>2364 わたなべ > LISTので止まっているようです。 うちのサーバが qmail + vpopmail だったのでテストしてみたところ 同様の現象が再現しました。 うちの場合 print SOCKET "LIST\r\n"; の直前の行に sleep 1; を挿入したらうまく動きましたので 試してみてはいかかでしょう。 |
|
>>2380わたなべ /tkさんのアドバイスどおりに sleep 1; を入れたら無事に動きました。 本当に有り難うございました。 大変お騒がせしましたが、これで落ち着いて眠れます。 今後ともよろしく御願いします。 |
|
68userさん。Kuwさん。有難うございます。 でも、長く入院してたせいで冗談抜きで全く分からないんです。 コピーってどうやるんですか? 甘えだとは思うのですが、迷惑でしょうがプログラム載せて貰いたいのですがおねがいします。聞けるような仲間がいないので。 |
|
>>2382 ARGUN > プログラム載せて貰いたい --- a2A.c ここから --- main () { system("tr a-z A-Z < sourse.c > trans.c"); } --- a2A.c ここまで --- a2A.c をコンパイルしてできた実行ファイルを、 sourse.c と同じディレクトリにコピーして実行してみてください。 運が良ければ、お望みの trans.c が作成されます。 とりあえず、課題はこれで良いとして、本気でプログラムの勉強を したいのならば、68user さんのアドバイスを参考にがんばってください。 あとは、 >>2230 68user > - 課題だからといって、問題をそのまま掲示板に書き込んでも反感を買うだけ、 > ということを書き込む前に推測できるようになる。 > - 仮に課題だとしても、そうは見えないようにうまくカムフラージュ > できるような文章力を身につける。努力しているという姿勢を > アピールする。 という金言も参考にされると良いでしょう。 |
|
>>2382 ARGUN google で「C言語 ファイル コピー」などと検索すれば、 サンプルプログラムなんてたくさん見付かります。 「C言語 小文字」だってたくさん見付かります。 http://pc.2ch.net/test/read.cgi/tech/1007902384/l50 で質問するのもよいでしょう。 ここで回答をもらえることを期待するよりもそっちの方が早いです。 >>2380 /tk > sleep 1; うーむ、改行コードは大外しでしたか。ということはその POP サーバは リクエストを 1行だけ読んでいるのではなく、select か何かでバッファに たまっているリクエストを全て解釈しようとしていた、ということですかね? 本来 USER 送って +OK を受け取って、PASS 送って +OK を受け取って、その後 LIST を送らねばならないところを、一気に USER、PASS、LIST を送って、その後 リプライを受け取るという手抜きをしていたからまずかった…と。 |
|
こんにちは。 環境は OSはSolaris 2.6、printerはEPSON LP8200PS2(PSプリンタ)です。 質問は、 lpコマンドで印刷用紙のサイズを指定したいのです。 HELPなどを見てもそれらしきoptionがないのですが、用紙サイズを A4とかB4とかに任意に設定するoptionはありませんか? よろしくおねがいします |
|
はじめまして。最近cgiの勉強をはじめたんですが、なかなかうまくいきま せん。 さっそく質問ですがローカルでcgiの動かし方がわからないんです。一通り 関連サイトを回ってみたのですがどうしても駄目なんです。例えば hello-worldを実行すると #!C:/Perl/bin/perl print "Content-type: text/html\n\n; print ""; print "Hello world.; print "; こうなってしまうんです。プロバイダがcgiの使用を許可してないので それが原因なのでしょうか?もしそうならなにか方法を教えてください。 よろしくお願いします。 |
|
ちなみに環境は windows98,internetexplorer5,プロバイダはocnです。 よろしくお願いします |
|
>>2386 cgi超初心者 >プロバイダがcgiの使用を許可してない のは全く関係ありませんので安心してください。 ローカルでCGIの動作確認をする方法を初心者向けに説明したサイトを紹介しておきます。 http://members.tripod.com/~tyanko/s_mokuji.html |
|
>>2385 hiro lp -f で できませんでしたっけ。 |
|
つかぬ事をお伺いしますが、perlで <+ でファイルオープン時に、開こうとする ファイルが存在しないとエラーとなりますが、以下の様な処理をしました。 が、どう見てもカッコ悪い(笑)のでこんなケースにはどんな処理をしているか お聞きしたいのですが・・・ if(!-e $dat_file){# 存在しない時に作成 if(!open(DAT, ">$dat_file")) { &error('オープンエラー', "データファイルの生成に失敗しました。[$dat_file]");} close(DAT); } #改めて開きなおし if(!open(DAT, "+<$dat_file")) { &error('オープンエラー', "データファイルのオープンに失敗しました。(1)");} while(<DAT>){ chomp; push(@record, $_); } |
|
>>2390 スナフキン open(DAT, "+<$dat_file") || open(DAT "+>$dat_file") || &error('..'); while(<DAT>){ .. } ってのはどうでしょうね。 あと、perlopentut(1) に参考になることが書いてあるかも (書いてないかも) しれません。 |
|
ウチのマシンの perl はバージョンが古く(5.004_04)なので perlopentut の情報は見つけられませんでした。 しかしキーワードを検索するといろいろと情報を得る事が出来ました。 if(!open〜 は自分なりの書式なので良く使っていましたが、perlで 杓子定規に覚える事にはあまり意味が無いですね(笑) いままで使った事の無い sysopen もいろいろ試してみます。 的確なキーワードありがとうございます。 参考になったURL http://www.wingworld.co.jp/forum/cgi/messages/1931.html う〜んバージョンを新しくしなければ・・・ |