68user's page 掲示板

Prev< No. 3304〜3320> Next  [最新発言に戻る] [過去ログ一覧]
No. 3304 # SL 2003/08/14 (木) 10:22:10
はじめまして、ソケット通信を勉強したくてこちらのHPにたどりつきました。すみませんがひとつ質問させてください。

ソケット通信でindex.htmlというファイルの中身は取得できたのですが、同じようにしてindex.cgiというファイルを指定すると

The requested URL /index.cgi was not found on this server.<P>

という返信が返ってきてしまいます。実行ファイルの場合は何か指定の仕方が違うのでしょうか。
どうぞ宜しくお願い致します。

No. 3305 # 68user 2003/08/14 (木) 11:13:15
>>3304 SL
> 実行ファイルの場合は何か指定の仕方が違うのでしょうか。
同じリクエストの仕方で問題ありません。

        http://www.asahi.com/index.html
は取得できるのに
        http://www.asahi.com/index.cgi
は取得できないのはなぜか?

asahi.com が index.cgi を置いてないからです。

No. 3306 # SL 2003/08/14 (木) 12:07:17
>>3304 68user

ご回答ありがとうございました。

> asahi.com が index.cgi を置いてないからです。

確かにそのとおりでした。すみません。
自分で置いてテストしたのですが、確認したら指定を間違えていました。

他サイトにあるスクリプトをソケット通信で実行したいと思って、やっているのですが、ブラウザからは実行できるのにソケット通信だとできないので、もしかしたら実行ファイルは他の設定があるのかと考えてしまいました。

ブラウザからは実行できるのにソケット通信では実行できないということはあるのでしょうか。

宜しくお願い致します。

No. 3307 # 68user 2003/08/14 (木) 15:44:08
>>3306 SL
> 他サイトにあるスクリプトをソケット通信で実行したいと思って、
> やっているのですが、ブラウザからは実行できるのにソケット通信
> だとできないので
これは index.cgi とは別の問題ですか?

どんなリクエストを送っているかを明らかにしていただくのが早い
んですが、まぁ想像するに Host ヘッダを送ってない、てなところでは
ないかと思いました。

いずれにせよクライアントを作る前に telnet で試してみてください。

No. 3308 # SL 2003/08/14 (木) 18:57:02
>>3307 68user

ご回答ありがとうございます。

> これは index.cgi とは別の問題ですか?

他のサイトにあるスクリプトが実行できないので、自分のところにスクリプトを置いて実験しているだけですので、困っていることはひとつです。

> んですが、まぁ想像するに Host ヘッダを送ってない、てなところ

Hostヘッダというのは送ってないような気がします。68userさんが公開してくださっているソースをそのまま使っただけですので。
ご指摘のhostヘッダの件が問題点のような気がします。

http://www.shop-link.net/tie-up/test/socket4.txt

ソースは上記です。すみませんが見ていただけますか。

宜しくお願い致します。

No. 3309 # 68user 2003/08/14 (木) 19:36:51
>>3308 SL
> ご指摘のhostヘッダの件が問題点のような気がします。
ブラウザで
    http://219.109.215.211/cgi/gp_new.CGI
を見ると not found になるということは、そういうことでしょうね。

http://x68000.startshop.co.jp/~68user/net/http-4.html を見て、
Host ヘッダを追加してみてください。

No. 3310 # SL [E-mail] 2003/08/14 (木) 23:27:04
>>3309 68user

ありがとうございました。
なんとか動くようになりました。

Hostヘッダを追加して、proxyを使用しないようにしました。

本当にありがとうございました。
また何かありましたら宜しくお願い致します(^^;

お礼と言ってはなんですが、メルマガ出してますので、何か宣伝したいことがあったらメールして下さい。<m(_w_)m>

No. 3311 # ken 2003/08/15 (金) 10:58:54
ご返答ありがとうございました。
えっと…結論から言うと、解決しました(^^;

ftpコマンドでもtelnetコマンドでも問題が無かったので、
やはり自分のプログラムに問題があるのだろうと思い、もう一度見直しました。
どうやら、全箇所でレスポンスを受け取ってないのが原因かと思いました。
ぼくは、要所要所でだけ、受け取ったレスポンスを表示させればいいのかと思ってたんですけど、どうやらそれがいけなかったようですね。
それによっていろいろと狂ってきたようです。
レスポンスをすべて表示させたりしたら直りました。
ではでは、ありがとうございましたm(_ _)m

No. 3312 # さんぺい 2003/08/19 (火) 15:57:03
初めて投稿させていただきます。
UNIXはまだ初心者です。
教えていただきたいことなんですが、今Cシェルを作成しています。
その中で処理終了後にメールを送ろうとしているのですがFrom句(差出人)
を任意で変更したいと考えているのですが可能なのでしょうか。
いろいろ調べてみましたがFrom句を変えるようなものはありませんでした。
ご存知のかたがいらっしゃったら教えていただけないでしょうか。
Subjectだけ指定したソースを記載しておきます。
お願いします。
サーバ(username)[1]:/usr/ucb/mail -s "test" test@test.co.jp < test.txt

No. 3313 # 68user 2003/08/19 (火) 18:15:36
>>3312 さんぺい
> /usr/ucb/mail -s "test" test@test.co.jp < test.txt
test.txt に
      From: hoge
      Subject: test
      To: test@test.co.jp

      本文
などとヘッダ類を全部書いて、
      % /usr/ucb/mail -t < test.txt
でいけると思います。

ただ、エラーが発生したときに戻ってくるメールアドレス
(envelope-from) はこれでは書き換わりませんのでご注意を。
もしそれも変更したいなら sendmail を直接呼ぶしかないと
思います。

No. 3314 # mikan [E-mail] 2003/08/21 (木) 10:02:49
初めて投稿させていただきます。
UNIXは学生の時に整った環境で触っていた程度です。

今、職場の方でUNIXにユーザ追加をし、メールユーザを増やそうとしています。
方法としては、
「vipwコマンド」を使用してユーザを追加しました。
ユーザ自体は追加できたのですが、いざメールを使用してみると、パスワード認証エラーがでてはじかれます。
パスワードがおかしいのかと思い、「passwdコマンド」でパスワードを変更してみたのですが結果は同じでした。

他になにか、設定がいるのでしょうか?
ちなみに、「fingerコマンド」を使用して追加したユーザ情報を表示したところ、ユーザは存在すると認識されているようです。
お手数ですが、素人な私にどうかご教示下さい。

No. 3315 # tomtom 2003/08/22 (金) 14:30:33
はじめまして、tomtom といいます。
ソケット通信に興味があり、勉強に励んではや3ヶ月の初心者です。

最近、自分で簡単なクライアントサーバのソケット通信プログラムを
作成してみたのですが、recv関数で受信エラーが発生してしまいます。
メッセージの送信元で、send関数により送信された内容と、
実際にrecv関数で受信した内容を確認してみたところ、きちんと
同じものが受信できているようでした。

そこで、エラー番号から何がおきているのか解析しようとしたのですが、
やり方が間違っているのかエラー番号を何も出力してくれません。

もし、何かお気づきのことがあるようでしたら、
ご指導いただけないでしょうか?

問題の箇所:

if(recv($sock_id, $msg, $MAX_BUFF, 0) eq undef){
                    print "$msg";
    print "errno = $!";
}

No. 3316 # tomotomo 2003/08/22 (金) 16:08:39
度々すみません。
先ほど投稿させていただいたtomtomです。
処理系を書き忘れたので,再度書き込みをさせていただきました。
動かしている処理系は、linuxです。
余談ですが、linux-perlとactive-perlとで、recvやsendなどの
システムコールの処理結果は、異なるのでしょうか?
(NG時undefを返さず、別のものを返す、、など)

クライアントをlinux-perlで、サーバをactive-perl(WinXP)で
起動しおり、サーバの方は、同様のrecv記述で上手く受信できているの
で、なにか関係あるのかな、と素人ながら少し気になりました。

以上、度々失礼しました。

No. 3317 # 68user 2003/08/22 (金) 16:21:46
>>3315 tomtom
> if(recv($sock_id, $msg, $MAX_BUFF, 0) eq undef){
undef かどうかのチェックは、正しくは
    if ( ! defined recv($sock_id, $msg, $MAX_BUFF, 0) ){
です。recv は相手側のアドレス (IP アドレス+ポート番号) を
返すので、それが undef と一致する、と解釈されているのかも
しれません。

# でも、この書き方では undef を返さない限り eq undef と
# ならないような気がするなぁ。

>>3314 mikan
> いざメールを使用してみると、パスワード認証エラーがでて
> はじかれます。
メールを使用というのは、POP を使ってメールを取得してみた
ということですか? もしそうなら、telnet で POP サーバに
アクセスし、本当に認証エラーになっているのか調べてください。
      http://x68000.startshop.co.jp/~68user/net/pop3-1.html

あと、ユーザ追加だけで OK か、というのは職場のメールサーバの
設定次第なので何とも言えません。

No. 3318 # tomtom 2003/08/23 (土) 09:37:45
tomtomです。
68userさん、アドバイスをありがとうございます。
自分が素人であることを実感いたしました。
undefを判別するのには、define関数をもちいるのですね。
アドバイスに感謝いたします。
早速、試してみますね。

ではでは

No. 3319 # スナフキン 2003/08/29 (金) 05:22:17
perlでテキスト処理をしていますが、有るリストをキーとしたハッシュ
を生成したんですが、そのキーとなるファイルのサイズが110Mb程、キー数
(レコード数)は約1000万弱のレコードが有ります。

そのハッシュのキーを使い別のCSVのフィールドの中に同じキーが存在
する場合に必要な処理を行なっています。
if(exists $KEY{$csv_key_field}){ 処理 }

で、実際に動かすと500Mbのメモリを使い切り(何故?)、1Gbのスワップ
さえも使いきり止まってしまいます。

根本的にこのアルゴリズム自体が悪いのか、それとも何かメモリ使用量を
抑える解決方法があるのか教えてください。

ちなみに、キーとなるデータを配列に格納して grep で検索するとさらに
べらぼうに時間が掛かります。

具体的には2つのリストの合成処理なんですが、このくらいの規模になると
DBに置き換えて処理した方が良いのでしょうか?
(最終的には何らかのDBに格納されるそうです)

もちろん、変数は可能な限り局所化しています。(つもりです(^^;)

もっと言えば、上記は最大サイズのリストではありますが、キーリストは
複数あり、それらを順繰りに処理しています。

どうぞお助けくださいm(_ _)m

No. 3320 # 68user 2003/08/29 (金) 22:28:24
>>3319 スナフキン
> そのキーとなるファイルのサイズが110Mb程、キー数(レコード数)は
> 約1000万弱のレコードが有ります。
全体のデータ容量がわからないですが、仮に 300MB 程度だとしても、
1.5GB 喰い尽くしてもおかしくないかなぁとは思います。

perl の内部構造は知りませんが、スカラー 1つ、配列の一要素、
ハッシュ 1キーなど、それぞれに必ず何バイトかずつ管理用データを
perl が保持しているからです。

実感としては、100MB 程度でもデータの持ち方次第ではまともに
動かないこともあるんじゃないかと思います。

> このくらいの規模になるとDBに置き換えて処理した方が良いので
> しょうか?
perl でもがんばれば何とかなるかもしれませんが (実データはファイルに
保存し、ハッシュにアクセスされるたびに tie でそのファイルを見にいくとか)、
    1. データが固定長 (もしくは最大長が決まっている)
    2. CSV の項目名や項目長が変わる可能性は少ない
    3. 処理内容が変わる可能性が少しでもある
          (この条件に引っかかるレコードは除外する、とか)
であれば、DB に突っ込んだ方がよろしいのではないでしょうか。
わたしならそうします。

項目名や項目長も変わるかもしれないなら、DBD::CSV モジュールとか
(使ったことないですけど)。

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