68user's page 掲示板

Prev< No. 2369〜2385> Next  [最新発言に戻る] [過去ログ一覧]
No. 2369 # わなたべ 2001/12/13 (木) 00:22:04
>>2364わたなべ
kuwさんありがとうございます。
STATを使う件、本日世が明けたら試してみます。
ありがとうございます。

No. 2370 # 68user 2001/12/13 (木) 01:07:12
>>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: .

です。

No. 2371 # kuw 2001/12/13 (木) 06:44:11
>>2370 68user
>それは mail box にメールがたまっていなかったときのみ . が
>ないのでしょうか? あるいはメールがたまっていても . がない
>のでしょうか?
メールがたまっていなかったときのみです。
メールがたまっているときは、
> +OK 1 messages (1146 octets)
> 1 1146
> .
となります。

>また、その POP3 サーバアプリケーションの名前は
>何かわかりますか?
EMWAC の IMS POP3 Server 0.87 です。
5, 6 年前に NT にインストールして以来、そのまま使っているので、
かなり古いものだと思います。
# この数年、NT を全くいじっていないので、最近の事情はわかりませんが・・・

>ちなみに . をもってレスポンスの終了と見なしている
もちろん、これは正しい仕様だと思いますし、
同じ仕様の MUA やメールチェッカーも多いと思います。

No. 2372 # わたなべ 2001/12/13 (木) 09:57:20
>>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

No. 2373 # 68user 2001/12/13 (木) 13:02:37
>>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";

を試して下さい。

No. 2374 # わたなべ 2001/12/13 (木) 15:01:43
>>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もこうした現象なのですが解決方法は無いものでしょうか?

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2375 # 68user 2001/12/13 (木) 15:27:01
>>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 には詳しくないのですが、これでよいんでしたっけ?>どなたか

No. 2376 # わたなべ 2001/12/13 (木) 16:54:32
>>2375わたなべ
試してみましたが、状況は変わりませんでした。
AT&TにPOP3のアプリケーションを確認したところ、qmailだそうです。
サーバーのOSは、教えてくれませんでした。
よろしく御願いします。

No. 2377 # ARGUN 2001/12/13 (木) 21:04:50
初めまして。初めてなのに、こんな事を書くのはあつかましいとも思うんですけど、どうにもならないのでフ゜ロク゛ラムを教えて欲しいんです。
実は、課題がでたんですけど分からないので。
内容ですが
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(

までは出来ました。それから先が全くわかりませんので、宜しくお願いします!

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2378 # kuw 2001/12/14 (金) 00:06:24
>>2373 68user
>その POP3 サーバのバグ
その通りです。
しかも、今回の件には、まるで関係ない話みたいですね。失礼しました。

>>2377 ARGUN
>Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、他のファイル(trans.c)に書き出す。
ならば、
cat sourse.c | tr a-z A-Z > trans.c
で良いのでは?

No. 2379 # 68user 2001/12/14 (金) 11:44:19
>>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 にコピーするところから
やってみては。

No. 2380 # /tk 2001/12/14 (金) 14:50:00
>>2364 わたなべ
> LISTので止まっているようです。
うちのサーバが qmail + vpopmail だったのでテストしてみたところ
同様の現象が再現しました。

うちの場合
      print SOCKET "LIST\r\n";
の直前の行に
      sleep 1;
を挿入したらうまく動きましたので
試してみてはいかかでしょう。

No. 2381 # わたなべ 2001/12/14 (金) 20:50:32
>>2380わたなべ
/tkさんのアドバイスどおりに
sleep 1;
を入れたら無事に動きました。
本当に有り難うございました。
大変お騒がせしましたが、これで落ち着いて眠れます。
今後ともよろしく御願いします。

No. 2382 # ARGUN 2001/12/16 (日) 22:07:44
68userさん。Kuwさん。有難うございます。
でも、長く入院してたせいで冗談抜きで全く分からないんです。
コピーってどうやるんですか?
甘えだとは思うのですが、迷惑でしょうがプログラム載せて貰いたいのですがおねがいします。聞けるような仲間がいないので。

No. 2383 # kuw 2001/12/17 (月) 04:35:58
>>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
> - 課題だからといって、問題をそのまま掲示板に書き込んでも反感を買うだけ、
>  ということを書き込む前に推測できるようになる。
> - 仮に課題だとしても、そうは見えないようにうまくカムフラージュ
>  できるような文章力を身につける。努力しているという姿勢を
>  アピールする。
という金言も参考にされると良いでしょう。

No. 2384 # 68user 2001/12/17 (月) 07:40:47
>>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 を送って、その後
リプライを受け取るという手抜きをしていたからまずかった…と。

No. 2385 # hiro 2001/12/18 (火) 13:04:35
こんにちは。
環境は
OSはSolaris 2.6、printerはEPSON LP8200PS2(PSプリンタ)です。

質問は、
lpコマンドで印刷用紙のサイズを指定したいのです。
HELPなどを見てもそれらしきoptionがないのですが、用紙サイズを
A4とかB4とかに任意に設定するoptionはありませんか?

よろしくおねがいします

Prev< No. 2369〜2385> Next  [最新発言に戻る] [過去ログ一覧]