ネットワークプログラミング相談室 Port2

このエントリーをはてなブックマークに追加
932デフォルトの名無しさん
WinAPIスレでも聞いたのですが、こちらに移動します。

メールサーバからメールのタイトルや送信者を調べて、
条件によって削除したいのですが、何を使うのがいいのでしょうか?
WinInetでは出来なさそうだし、
Telnetじゃカッコ悪いし。
何かいいのありませんか?

過去ログを”メール”で検索しましたが、それらしいのは見つかりませんでした。
>>932
自分でPOP3なりを喋る。
934名無しさん@接続しっぱなし。:02/06/05 03:17
>>932
PerlかVB(WSH)なんじゃないの?
Ruby, Pythonとかさ。
935デフォルトの名無しさん:02/06/05 04:04
スレ違いなのですが、IEなどのブラウザはCookieをどう吐いているのでしょうか?
ローカル串鯖を構築しているのですが、クライアントのCookieとは別管理したいのです
つまり、串を通した時のレスは串鯖のCookieとなる訳です。
API使って共通化させてしまえば、簡単なのですが…
936932:02/06/05 06:18
レス付いてる! うれしい(^O^)

Delphiで作ろうと思ったんですよ〜。
POP3って事は WinSock を使うのかな?
面倒そう・・・。

もしかして MAPI を使うのかも!
ちょっとやってみます。
>>936
Delphiならそういうコンポーネント探したほうが早いと思うが。
>>936
ぜんぜん面倒じゃないよ。
いつまでもWinsockから逃げてたらだめだYO!
マシンAからマシンBにデータを送信してる時に、
マシンBからマシンAに対してpingを打っていると転送速度が上がったり
接続が切れにくくなるのはプラシーボ効果なのでしょうか?

プラシーボ効果でなければ、現在開発中のアプリにping相当の機能を
盛り込みたいと思っていますので、参考文献を紹介して頂けると有り難いです。
プラシーボ効果という言葉の意味を勘違いしてる説
ダウンロードソフトにもサーバにping打つものがあったような・・。
pingが本当に効果があるのかどうか俺も知りたい。
>>939
一般的に言って無駄

>>941
それはサーバまでの回線の具合を計測する目的と思われ
複数のミラーから選ぶためのデータ取り
943939:02/06/05 23:04
>>942
回答ありがとうございました。
ping打っても意味無いんですね・・。
944936:02/06/06 04:27
よ−し!
WSockets v.1.20
http://www.torry.net/vcl/internet/sockets/wsock120.zip
をダウンロードしました!

\Examples\TCPClient.dpr
を実行して、
Hostにメールサーバ、Portに25を入力して、OpenConnection しましたが、
Dataには何を書いて、SendData すればいいのでしょうか?

HELO を送っても何も起きないぞー。
RFC読めば良いんでないの?
946944:02/06/06 05:00
わかった!

最後にCRLFを二つ重ねないと駄目です。

が、今度は
501 HELO requires domain address
と出ました。

RFCも見っけ!
http://www.asahi-net.or.jp/~bd9y-ktu/dtd_f/rfc_f/rfc821j.html
HELO 自分のドメイン名


250 サーバー名 hello 自分のIP pleased to meet you

と出ましたが、直後に

550 Access denied

がでます。 なぜでしょう?
948947:02/06/06 05:50
わかった・・・。
HELO ドメイン名 の後にCRLFを二つ重ねたら駄目でした。
949名無資産@ヘタレ部:02/06/06 05:51
>>946
とりあえずはtelnetでターゲットのSMTP鯖と
手動でお話してみることをオススメする

C:\>telnet host.domain 25
でいいから
レスありがとうございます。 Telnet は後でやってみます。

http://www.puni.net/~mimori/relay/apop.html
に載っている、APOP による認証で、

-ERR [AUTH] not authenticated

が出ます。

Write('APOP UserName' + MD5Str + #13#10);
とやっているのですが。
951950:02/06/06 07:44
追加:UserName と MD5Str の間にはちゃんと空白が入っています。

もしかしてサーバがAPOPに対応していないのかな。

それにしても、Outlook や Netscape はパスワードを
垂れ流していたんですね・・。
952934:02/06/06 11:03
>>944
あの〜、ヒートアップ中に申し訳ないんですが、
SMTP(port 25)とPOP3(port 110)は別プロトコルですよ。
その辺大丈夫ですか?

PerlでNet::POP3モジュール使ったら、

>>932
> メールサーバからメールのタイトルや送信者を調べて、
> 条件によって削除したいのですが、何を使うのがいいのでしょうか?

なんて滅茶簡単だけどね。
http://member.nifty.ne.jp/hippo2000/perltips/rcvmail.htm
953デフォルトの名無しさん:02/06/06 15:24
select()関数って遅いんですか?
もどってくるのに1秒くらいかかるんですけどこれって正常ですか?
954953:02/06/06 15:31
遅いのはselect()じゃなかったです。ごめんなさい
955デフォルトの名無しさん:02/06/06 15:34
WinSockでファイルの送信はできるんですが、
受信側でrecv()が返す値の合計がちゃんと合っているのに
生成されたファイルが元のファイルより小さくなってしまいます。
どのような原因が考えられるのでしょうか?一応ソース晒しときます。

while(1){
memset(recvbuf, 0, sizeof(recvbuf));
// データを受信
buf_len = recv(new_socket,recvbuf,RECVSIZE - 1,0);

if(buf_len == SOCKET_ERROR || buf_len < 0 || buf_len > RECVSIZE){ // 受信失敗の場合
MessageBox(NULL, "データ受信失敗", "エラー", MB_OK);
shutdown(new_socket,2);
// ソケットを破棄
closesocket(new_socket);
return;
}

recvbuf[buf_len] = '\0'; // 受信バッファの後ろにNULLを付加
recvsize += buf_len;

fprintf(fp, "%s",recvbuf); // ファイルに出力する

int percent;
percent = (int)( ((float) recvsize / datasize ) * 100);
sprintf(mesbuf, "データ受信中( %d bytes / %d bytes : %d %% 完了 )", recvsize, datasize, percent);
StatusBar->SetMessage(mesbuf);

if(percent == 100){
sprintf(mesbuf, "データ受信完了しました");
StatusBar->SetMessage(mesbuf);
break;
}
}

ソース見てないけど、
recvが返したデータを全部書き出してないだけだろ。
100バイトのメモリをファイルに98バイト書き出せば98バイトのファイルのできあがり
シングルスレッドのプログラムでacceptしてるんですけど
2つのクライアントがconnectに成功してしまいます?
listen(sock, 5)が影響してそうなんですけど
1つしかconnectが成功しないように制限するには
どうしたらよいでしょうか?
>>957
listen(sock, 1)とか(笑)
>>958
ためしました。だめでした。
960955:02/06/06 16:34
>>956
>>recvが返したデータを全部書き出してないだけだろ。
>>100バイトのメモリをファイルに98バイト書き出せば98バイトのファイルのできあがり
なるほど。
fprintf(fp, "%s",recvbuf); // ファイルに出力する
ここで失敗していたということですね。
それじゃどうやって出力すべきなんでしょうか?
961955:02/06/06 16:38
あと…、
ファイル送受信のテストはネットに接続した同じパソコンでやっているんですが、
みたところネットを経由せずに直接パソコンの中でデータをやり取りしているように見えます。
そんなことってあるんですか?
>960
fwrite。
>961
判断の根拠を示せ。
>957
acceptした後、listenソケトを閉じろ。
>>962
神!
964955:02/06/06 17:09
>>962
fwrite()で書き込んだところ、上手くいきました。
かなり悩んでいました。本当にありがとうございます。

それから、判断の根拠というのは以下の理由からです。
・右下のタスクバーのアイコンが通信している様子を示さない
・状態を見てみても、送信バイト数と受信バイト数に変化が見られない
・パケットの到着がとても早い
localhost間の通信はLANとか外のネットワークにパケットは
飛ばないよ。 当然だろが。
966デフォルトの名無しさん:02/06/06 18:30
HTTPでファイルをダウンロードするプログラムを作っているんですが、
バイナリファイルをダウンロードするとどうしてもファイルサイズが合いません。
もちろんファイルは壊れています。バイナリでみると、最初のほうに
Content-Type: application/octet-streamというのが含まれたりするんですが。
どうすればちゃんとダウンロードできますか?
>>966
HTTPヘッダ解釈してないの?
それとも、ちゃんとbodyみてるのにあわないの? その場合はHTTP/1.1でrequestしてchunkedで応答されてたり?
次スレです。

ネットワークプログラミング相談室 Port3
http://pc.2ch.net/test/read.cgi/prog/1023356587/
>>968
これ、マ板に誤爆です。ム板のものを立て直しますんで、
このスレ放置おながいします。すまん。
(゚Д゚≡゚Д゚)??
ERROR:スレッド立てすぎです。。。

ネットワークプログラミング相談室 Port3
名前: 名無しさん@接続しっぱい。
E-mail: sage
内容:
前スレに引き続き、主にソケットに関しての質疑応答スレです。

過去スレ:
ネットワークプログラミング相談室
http://pc.2ch.net/test/read.cgi/tech/970344582/

ネットワークプログラミング相談室 Port2
http://pc.2ch.net/test/read.cgi/tech/1006258198/



・・・ってことで、時間を置いてリトライします。重ねてすまん。
972デフォルトの名無しさん:02/06/06 19:06
>>967
サーバからのレスポンスは以下の通りです。
htmlをダウンロードするときは上手くいくんですが、
書庫とか、その他のファイルをダウンロードするとやっぱり上手くいきません。

2002/06/06 18:58:28 サーバからのレスポンス
2002/06/06 18:58:28 HTTP/?.? Content Partial Content
2002/06/06 18:58:28 HTTP/1.1 206 Partial Content
2002/06/06 18:58:28 Date: Thu, 06 Jun 2002 10:00:02 GMT
2002/06/06 18:58:28 Server: Apache/1.2.5
2002/06/06 18:58:28 Last-Modified: Fri, 25 Jun 1999 16:42:36 GMT
2002/06/06 18:58:28 ETag: "f97f1-21fbb-3773b17c"
2002/06/06 18:58:28 Content-Length: 139195
2002/06/06 18:58:28 Content-Range: bytes 0-139194/139195
2002/06/06 18:58:28 Connection: close
2002/06/06 18:58:28 Content-Type: application/x-lha
>>972
で、そのあとに139195バイト来ないの?
(ところで Apache/1.2.5って…)
ネットワークプログラミング相談室 Port3
http://pc.2ch.net/test/read.cgi/tech/1023359282/

次スレ立ちました。よろしくおながいします。
>>967
解析してないだろ。
バイナリの先頭にContent-Type:〜って入ってるみたいだから。
976デフォルトの名無しさん:02/06/06 19:44
>>975
そう思って見てみました。
やっぱりそこにミスがあって修正もしましたが依然としてダウンロードは上手くいきません。
ちなみにリクエストは以下の通りで、Irvineをみてそのままパクったんですが、何か問題あるのでしょうか?

GET /taketani/soft/file/pktxt18.lzh HTTP/1.0
Host: www.eva.hi-ho.ne.jp
User-Agent: AutoDownloader/0.0
Referer: http://www.eva.hi-ho.ne.jp/taketani/soft/file/pktxt18.lzh
Accept: */*
Range: bytes=0-
Connection: close
977デフォルトの名無しさん:02/06/06 19:48
あとデータは現在の実装だとレスポンスの\r\n\r\nの後ろからを切り離して保存しているんですが、
それでいいのかどうかもわかりません。具体的に説明したページなどありませんでしょうか?
>>977
RFC2616
バイナリデータが流れてくるまでのすべてのレスポンスヘッダも書け
>>977
HTTPを最初から勉強しる。
RFCを読まずに書かれたネットワークプログラムって怖いな
982977:02/06/06 21:19
>>979
こんな感じなんですが…

HTTP/1.1 206 Partial Content
Date: Thu, 06 Jun 2002 10:50:27 GMT
Server: Apache/1.2.5
Last-Modified: Fri, 25 Jun 1999 16:42:36 GMT
ETag: "f97f1-21fbb-3773b17c"
Content-Length: 139195
Content-Range: bytes 0-139194/139195
Connection: close
Content-Type: application/x-lha

>>980
少しは勉強したつもりだったんですが…なんか良い勉強サイトなどないでしょうか?
>>982
すべてのと言ったはず。\r\n\r\nまでじゃない
ネットワークプログラミング相談室 Port3
http://pc.2ch.net/test/read.cgi/tech/1023359282/l50