68user's page 掲示板

Prev< No. 523〜580> Next  [最新発言に戻る] [過去ログ一覧]
No. 523 # 68user 1999/11/05 (金) 03:22
Solaris の vipw の動作は知りませんが、一般論として `busy' と言われたなら
    ・前に実行した vipw のプロセスが残っていないか、ps -ef | grep vipw で確認
    ・fuser /etc/passwd で、/etc/passwd をオープンしっ放しのプロセスを調べる
    ・/tmp や /var/tmp などにロックファイル (というよりテンポラリファイルかな) が
        残っていないか調べる ( BSD なら /etc/ptmp* とか /etc/pw* など)
    ・truss vipw で、どこでどのファイルを読んだ後エラーになっているか調べる
てなところでしょうか。

> crontabが上手く働いてないのでしょうか?
僕は Solaris マシンでroot 権限を持ってないのでわかりませんが、
Solaris の vipw って cron が関わってくるんでしたっけ?

No. 524 # みのる 1999/11/09 (火) 11:51
68user さん、ありがとうございます。

ちょっと他の仕事が立込んでいますが、確認してみます。

No. 525 # hh 1999/11/09 (火) 20:23
お聞きしたいんですが、いくつかドライブがあるんですが、今、それぞれ、OSはwinddow95,window98,
Linuxにしたいですが、できますでしょうか。マシンはFujitsuのDos/Vです。ご存じなら、教えていただけませんか。
よろしくお願いいたします。

No. 526 # hh 1999/11/09 (火) 20:24
お聞きしたいんですが、いくつかドライブがあるんですが、今、それぞれ、OSはwinddow95,window98,
Linuxにしたいですが、できますでしょうか。マシンはFujitsuのDos/Vです。ご存じなら、教えていただけませんか。
よろしくお願いいたします。

No. 527 # 68user 1999/11/10 (水) 00:15
> 今、それぞれ、OSはwinddow95,window98, Linuxにしたいですが、
今 winddow95,window98, Linux が入ってるんですか?
これから winddow95,window98, Linux を入れたいんですか?

> できますでしょうか。
多分できると思いますが、Windows も Linux も使ってないので
確かなことは言えません。
    http://www.so-net.ne.jp/ClubHouse/room/pc_scramble/pc_scramble.html
で教えてもらえるでしょう。

No. 528 # hh 1999/11/10 (水) 10:39
68userさん
どうもありがとうございました。いま、OSはwindows95だけです。
これから、window98とLinuxを入れたいです。
教えていただいたURLも見てみます。

No. 529 # mmc 1999/11/10 (水) 16:24
2000年1月1日にセットしたいのですが?

No. 530 # みのる 1999/11/10 (水) 18:01
"vipw"とすると"etc/passwd file is busy"の件

/etc にテンポラリファイルが残っていました。"temp"で探していましたが、"tmp"でした。
ありがとうございました。

現在、Turbolinux4.2 インストールで奮闘しておりました。なんとか動くようになったものの、
時間表示が白くなり見えない状態です。なかなかサーバ構築までの道のりは遠いようです。。。

No. 531 # やまい [E-mail] 1999/11/10 (水) 18:33
名前を「やまい」元(山井 孝雄)に変えました。
またまたHELP依頼です。ご存じの方がおられましたら教えてください。

PERLにDBIとDBD(ODBC)を組み込もうとしています。
PERL5.003のときはうまくいっていたのですが
今回5.00503ではうまくいきません。
PERL(APi522e.exe)をインストールした後、
DBI(DBI-1.13.tar.gz)を展開しインストールまではうまくいきました。
DBD(DBD-ODBC-0.22.tar.gz)を展開した後、
perl makefile.pl は正常に実行できたのですが、
nmake で以下のエラーがでてストップしてしまいます。

    cl.exe -c -IC:/Perl/site/lib/auto/DBI -Od -MD -DNDEBUG -GX -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_CAPI -Od -MD -DNDEBUG -GX -DVERSION=\"0.22\" -DXS_VERSION=\"0.22\" -IC:\Perl\lib\CORE dbdimp.c
dbdimp.c
C:/Perl/site/lib/auto/DBI\DBIXS.h(403) : warning C4005: 'DBIS' : マクロが再定義されました。
dbdimp.c(31) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
NMAKE : fatal error U1077: 'cl.exe' : リターン コード '0x2'
Stop.

なお、使用環境は
Windows 4.0 Server
ServisePack3
Visual C++ Version 5.0
です。

チェックポイント等がありましたら教えてください。





No. 532 # 匿名200x 1999/11/11 (木) 07:36
始めまして。
質問があります。
C言語(CGI)でファイルロック関数を作ろうと思うのですが
どうやらディレクトリがある,ないで判定すれば
プロセスが割り込んでくる確率も少ないらしいので
mkdir,rmdir,sleep関数を使って作ろうと思います。
でとりあえず各関数使ってみたら
「ヘッダファイルがてーぎされてへんよー!注意しなはれ〜」
みたいなエラーが出てまいりました。
私はWindows環境しかないので
FTPアップロード->コンパイルという手段で作成してます。
Windows環境なら"direct.h"をインクルード
すれば良いのですがどうやら違う(ヘッダファイルがない)みたいです。
サーバーの/usr/includeディレクトリとか覗けるので色々探してみましたが
お手上げ状態です。。。
そこでmkdir,rmdir,sleep関数のヘッダファイルの位置を
教えてほしいのですが…
# インクルードしなくても動くことは動くんですが。。。気に入らないです。
サーバーが何たらUNIXか何たらLinuxかがわかりません。
BSD系UNIX(???)(Linux???)たぶん何たらLinuxだと思うのですが。。
gccのバージョンは(gcc -vした結果)
>Reading specs from /usr/lib/gcc-lib/i386-pc-linux->gnulibc1/egcs-2.91.66/specs
>gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
なんか情報が少なすぎますけど
「自分の環境ではこうですよ。」
でもかまいません。
よろしくお願いします。

No. 533 # goe 1999/11/11 (木) 11:47
サーバ上に、Windowsで圧縮したlzhファイルをおいて、サーバで解凍したいのですが、
xxx% lha x filename(圧縮ファイル名)
と、コマンドを入力しても実行されません。
lhaのツールがインストールされているか調べる方法等がわかりません。教えていただけますでしょうか?

No. 534 # イプサム 1999/11/11 (木) 13:23
はじめまして。
c言語関数で調べていることがあります。
子プロセスを生成するspawn関数というものがあります。
この関数が、POSIX準拠の関数か否かをご存知の方
いらっしゃいますか?
よろしくお願いいたします。

No. 535 # イプサム 1999/11/11 (木) 13:24
はじめまして。
c言語関数で調べていることがあります。
子プロセスを生成するspawn関数というものがあります。
この関数が、POSIX準拠の関数か否かをご存知の方
いらっしゃいますか?
よろしくお願いいたします。

No. 536 # イプサム 1999/11/11 (木) 13:24
はじめまして。
c言語関数で調べていることがあります。
子プロセスを生成するspawn関数というものがあります。
この関数が、POSIX準拠の関数か否かをご存知の方
いらっしゃいますか?
よろしくお願いいたします。

No. 537 # 68user 1999/11/11 (木) 19:20
> 2000年1月1日にセットしたいのですが?
BIOS で時間をセットすればいいでしょう。

> PERLにDBIとDBD(ODBC)を組み込もうとしています。
う〜ん、全然わからんです。Windows環境持ってない上に、こういう
エラーって、大抵の場合
    #ifdef WIN32
の書き忘れが原因だったりするんで、perl/Windows/DBI/DBD に精通していない
僕にはさっぱりわかりません。

> サーバーが何たらUNIXか何たらLinuxかがわかりません。
`i386-pc-linux' とあるので Linux なんでしょうけど、
OS名は uname -a でわかります。
# ディストリビューション名ってどうやって調べるんだろう?

> 「ヘッダファイルがてーぎされてへんよー!注意しなはれ〜」みたいなエラー
というのはあり得ないです。インクルードしなくても動くということは
「mkdir/rmdir/sleep という関数の宣言がされていない」という warning
(implicit declaration of function `mkdir') ですかね。エラーや warning は
訳さずそのまま書いて下さい。

で、インクルードファイルがわからないときは、man で確認して下さい。
    % man 2 mkdir
    % man 2 rmdir
    % man 3 sleep
とすると、
    NAME mkdir - make a directory file
    SYNOPSIS
        #include <sys/stat.h>
        int mkdir(const char *path, mode_t mode)
という情報が得られます。

> xxx% lha x filename(圧縮ファイル名)
> と、コマンドを入力しても実行されません。
「実行されない」とは何ですか? 「Command not found」になるんですか?
    % locate lha
で、ファイル名に `lha' を含むファイル一覧が表示されますが、
それでも見付からないなら本当にインストールされていないんでしょう。
管理者に頼むか、自分でインストールすることになります。

> 子プロセスを生成するspawn関数というものがあります。
> この関数が、POSIX準拠の関数か否かをご存知の方
うーん、わからんです。FreeBSD/Solaris ともに spawn という関数は
ないので、POSIX 準拠ではないと思うんですが…確信はありません。

No. 538 # PUYO [URL] 1999/11/12 (金) 00:49
初めまして。
ネットワークプログラミングの基礎知識 大変興味深く読ませていただきました。これからもがんばって下さい。

陰ながら応援しています。

No. 539 # 68user 1999/11/14 (日) 04:48
どもども。間違いなどありましたら、ぜひご指摘お願いします。

No. 540 # 日向 1999/11/14 (日) 14:03
はじめまして。
「ネットワークプログラミング」読ませて頂きました。
説明、サンプルプログラム共に大変分かりやすく、
すぐに自分なりに応用することができ、大変為になりました。^^

ただ、一つだけ分からなかったことがあります。
HTTPクライアントでPOSTメソッドに対応しようとしたのですが、

$message = "name=test&mail=test&url=test&message=test\r\n";
$len = length($message);

print SOCKET "POST /cgi-bin/mybbs.cgi HTTP/1.1\r\n";
print SOCKET "REFERER: (略)/cgi-bin/mybbs.cgi\r\n";
print SOCKET "Content-length: $len\r\n";
print SOCKET "\r\n";
print SOCKET $message;

とした所、実際にはPOSTされていないようなのです。
これは自分の掲示板(本のサンプルの真似ですが)に対してのPOSTですが、
REFERERチェックの入らない友人の掲示板でテストしてみてもPOSTされないようです。
ので、恐らくこちらのスクリプト側に誤りがあると思われるのですが…。
また、\r\nを\rや\nに変えても駄目でした。
どこが間違っているのでしょうか…?ご教授頂ければ幸いです。

ちなみにSunOS 5.6,Perl 5.004_04です。

No. 541 # 68user 1999/11/14 (日) 16:54
# GET ができるのに POST だけができないのなら、外してますが…
HTTP/1.1 では、Host ヘッダが必須になります。
    POST /cgi-bin/mybbs.cgi HTTP/1.1\r\n
    Host: 相手先のサーバ名\r\n
    Content-length: $len\r\n
    \r\n
    $message
でどうですか? これが原因なら、HTTP/1.0 にすればうまくいくはずです。
また、サーバのレスポンスは「400 Bad Request」となっているはずです。

それでもダメなら、
    #!/usr/local/bin/perl
    $|=1;
    sysread(STDIN, $input,$ENV{CONTENT_LENGTH});
    print "Content-type: text/plain\n\n";
    print "$input\n";
という、データを受けて表示するだけの CGI を相手に、いろいろ
試してみて下さい。

No. 542 # みのる 1999/11/15 (月) 15:35
いつも拝見しております。みのるです。(環境:SunOS5.6)
いきなりで大変心苦しいのですが、"passwd"が実行不可となってしまいました。

急に
-r-sr-sr-x 3 root 96392 Feb 24 1999 nispasswd*
-r-sr-sr-x 3 root 96392 Feb 24 1999 passwd*
-r-sr-sr-x 3 root 96392 Feb 24 1999 yppasswd*

となりroot権限で"passwd"コマンドが利かなくなってしまい、
chmod 555 passwd
でアクセス権を変更したのですが、
「passwd(SYSTEM): ○○○○ does not exist
アクセス権が与えられていません。」とエラーになってしまいます。
シンボリックリンクにすればよいのでしょうか???

No. 543 # 68user 1999/11/15 (月) 20:59
> -r-sr-sr-x 3 root 96392 Feb 24 1999 passwd*
これで正しいです。suid/sgid が立ってないと root 以外のユーザが
パスワード変更できなくなります。とりあえず
    % chmod 6555 /usr/bin/passwd
で元に戻して下さい。それでも動かないなら、そのときの症状を書いて下さい。

No. 544 # mm 1999/11/16 (火) 01:07
見逃してた…
spawn系の関数は、MS-DOSに特有のものです。

No. 545 # みのる 1999/11/16 (火) 12:10
下記コマンドでも同じエラーになりました。
昨日、リンクを外してしまったのですが、、、それが原因でしょうか。。。
昨日の時点では、同じノードでした。

# chmod 6555 /bin/passwd
# ls -ali | grep passwd
        313716 -r-xr-xr-x 1 root 96392 Nov 16 11:57 nispasswd*
        313666 -r-sr-sr-x 1 root 96392 Feb 24 1999 passwd*
        313717 -r-xr-xr-x 1 root 96392 Nov 16 11:57 yppasswd*

No. 546 # イプサム 1999/11/16 (火) 17:02
mmさん、ありがとうございます。
UNIX系では、無いのですかねぇ〜。
残念です。

No. 547 # 68user 1999/11/17 (水) 02:43
> 昨日、リンクを外してしまったのですが、、、それが原因でしょうか。。。
多分これが原因じゃないとは思うんですが、元に戻すには
    # rm nispasswd yppasswd; ln passwd nispasswd; ln passwd yppasswd
です。で、どういうエラーなのかいまいち掴めないんですが、
> 「passwd(SYSTEM): ○○○○ does not exist アクセス権が与えられていません。」
○○○○ には何が入るんですか? ユーザ名?

もし NIS 使ってたり、shadow 化してるなら、原因を突き止めづらいですね。
まわりのサーバと /etc のパーミッションを見比べてみてはどうでしょう。

# こーゆーときは truss が便利なんだけど、suid プログラムには
# truss 使えないのね…。

> spawn系の関数は、MS-DOSに特有のものです。
なるほど。ラクダ本の TCP サーバの例で sub spawn というのが
あるんで、C の新しい関数で似たものがあるのかと思ってました。

No. 548 # GAT 1999/11/17 (水) 18:18
始めまして。
「ネットワークプログラミングの基礎知識」
非常に面白かったです。
これからもがんばってください。>68userさん

さっそく質問なんですが。
うちにあるLinux(Vine 1.1)のApache1.3.3は
CGIが「自分 グループ 他人」の「他人」の権限で
動くんです。
ところがCGIが他人の権限で動くのはまずいらしい
ので自分権限で動くようにしたいのですがどうのように
設定ファイルを書きかえれば良いのでしょうか。。
調べてみた所,User命令
(http://japache.infoscience.co.jp/japanese_1_3/manual/mod/core.html#user)
とかでやるんでしょうか?

No. 549 # 68user 1999/11/17 (水) 18:50
> これからもがんばってください。
どもども。ありがとうございます。

> CGIが「自分 グループ 他人」の「他人」の権限で動くんです。
正確には、nobody 権限で動く、でしょうね。

> ところがCGIが他人の権限で動くのはまずいらしいので
これは管理者の方針によります。web しか置いていないサーバでは
各ユーザ権限で動かす方が安全でしょうけど、学校のようにメールや
いろんなデータが置いてあるサーバで各ユーザ権限で動かすのは
危険 (CGIに穴があるとメールなども全て見られてしまう)、
という考え方もあります。

> 調べてみた所,User命令
それは、例えば apache を nobody 権限でなく www (というユーザ)
の権限で動かしたい場合に使います。

例えば locate のデータなども、nobody 権限で作成されるので、
本来 apache は nobody 権限でなく www などの専用アカウントを
作って、その権限で動かした方が安全です。

で、結論としては
    http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html
を使います。これを使うと CGI/SSI ともに各ユーザ権限で動きます。

長々と語っておいてアレですが、僕は suExec を設定したことはないです。
上のリンクにはコンパイルがどうこうって書いてありますが、必要なのかなぁ。
ソース持ってきて
    % ./configure --enable-suexec
とするのではダメなんでしょうか。いろいろ試してみて下さい。

これとは別に、cgiwrap というのを使う方法もあります。
    ftp://ftp.win.or.jp/pub/network/www/cgiwrap

これだと CGI だけ各ユーザ権限で動きます。コンパイルして
/usr/local/apache/cgi-bin/cgiwrap にインストールして、
    http://localhost/cgi-bin/cgiwrap/~username/cginame.cgi
とすると、/~username/cginame.cgi が username の権限で動きます。
httpd.conf に
    AliasMatch "^/([^/]+)/cgi-bin/(.*)$" "/cgi-bin/cgiwrap/$1/$2"
などと書いておくと、/~username/cgi-bin/hoge.cgi にアクセスしただけで
各ユーザ権限で動かすこともできますね。

ん〜長くなってしまった。

No. 550 # mm 1999/11/17 (水) 21:27
>なるほど。ラクダ本の TCP サーバの例で sub spawn というのが
spawn ってどういう意味なんだろうと以前から疑問だったので調べたら、
魚などの産卵という意味なのですね。

MS-DOSの spawn は、exec(3)を真似たものだと思います。
MS-DOSの主なコンパイラで使えるようです。
exec系のライブラリもありますが、例えばBorland C++の場合
int spawnve(int mode, char *path, char *argv[], char *envp[]);
で、mode に P_WAIT を指定すると、親プロセスはそのままにして、
空きメモリで子プロセスを実行し、終了後に親プロセスに制御を戻します。
mode を P_OVERLAY にすると、execve() と同じになります。

No. 551 # みのる 1999/11/18 (木) 01:57
いつもありがとうございます。みのるです。

> 「passwd(SYSTEM): ユーザアカウント does not exist アクセス権が与えられていません。」の件。

リンク等、元に戻す前に、"passwd"コマンド復活しました。現在、以下の状態です。
313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 nispasswd*
313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 passwd*
313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 yppasswd*

ただ、原因はまだ解りません。trussが使えたので、見てみてはいるのですが、不明です。
ここで質問なのですが、"root"以外のユーザでも、コマンド書換(もしくはアクセス権付与)は
可能でしょうか?私どものサーバセキュリティ上に問題があるような気がしてなりません。

No. 552 # 68user 1999/11/18 (木) 18:32
> trussが使えたので
なるほど。root なら使えるんですね。

> "root"以外のユーザでも、コマンド書換(もしくは
> アクセス権付与)は可能でしょうか?
root 以外の一般ユーザが /usr/bin/passwd を書き換えたり、
パーミッションを変更させることができるか、ということですか?
もちろん普通は不可能ですが、セキュリティホールがある場合は
その限りではありません。

「passwd が効かなくなった=クラック」というわけでも
ないので、しばらく様子を見てはどうでしょう。

No. 553 # GAT 1999/11/19 (金) 02:40
>68user 1999/11/17(水) 18:50
>> CGIが「自分 グループ 他人」の「他人」の権限で動くんです。
>正確には、nobody 権限で動く、でしょうね。
nobody権限というんですか。。
知らなかった(^^;

>> ところがCGIが他人の権限で動くのはまずいらしいので
>これは管理者の方針によります。
むむー
なるほど。
ケースバイケースとかいうやつですか。

>で、結論としては
> http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html
>を使います。これを使うと CGI/SSI ともに各ユーザ権限で動きます。
>
>長々と語っておいてアレですが、僕は suExec を設定したことはないです。
>上のリンクにはコンパイルがどうこうって書いてありますが、必要なのかなぁ。
>ソース持ってきて
> % ./configure --enable-suexec
>とするのではダメなんでしょうか。いろいろ試してみて下さい。
suEXEC。これですか
Apacheのバージョンアップとともに試してみます。
上手くいったら報告に参りたいと思います。

>これとは別に、cgiwrap というのを使う方法もあります。
> ftp://ftp.win.or.jp/pub/network/www/cgiwrap
>
>これだと CGI だけ各ユーザ権限で動きます。コンパイルして
>/usr/local/apache/cgi-bin/cgiwrap にインストールして、
> http://localhost/cgi-bin/cgiwrap/~username/cginame.cgi
>とすると、/~username/cginame.cgi が username の権限で動きます。
>httpd.conf に
> AliasMatch "^/([^/]+)/cgi-bin/(.*)$" "/cgi-bin/cgiwrap/$1/$2"
>などと書いておくと、/~username/cgi-bin/hoge.cgi にアクセスしただけで
>各ユーザ権限で動かすこともできますね。
suEXECのインストールに失敗したらこちらも試してみます。

No. 554 # 68user 1999/11/19 (金) 03:38
> http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html
やっぱりこれって古いのね。英語版の方を見て下さい。
    http://japache.infoscience.co.jp/apache/docs/suexec.html

うちでも apache1.3.9 を入れてみましたが、configure,make,make install で
簡単にインストールでき (configureのオプションを付けたり、httpd.conf の
手直しはしましたが)、suExec もうまく動きました。

> nobody権限というんですか。。
わかっておられるかもしれませんが念のため書いておきますと、他人の権限で
動くことを「nobody 権限」と呼ぶのではないです。実際に nobody という
アカウントは実在しており (see /etc/passwd)、その権限で httpd は動いている、
ということです。

なんで nobody で動くかというと、httpd.conf に
    User nobody
と書いてあるからです。

No. 555 # GAT 1999/11/21 (日) 04:51
ちょっと時間が取れなくて
返事遅れました。(_ _)
apache1.3.9は普通に?
configure,make,make install
でインストールできました。
suEXECも無事インストールできました。
CGIなどが各ユーザー権限で動いてました。
ありがとうございます。

>わかっておられるかもしれませんが念のため書いておきますと、他人の権限で
>動くことを「nobody 権限」と呼ぶのではないです。実際に nobody という
>アカウントは実在しており (see /etc/passwd)、その権限で httpd は動いている、
>ということです。
えぇ。その辺は大丈夫です。

No. 556 # 九面で迷ってるオレ 1999/11/21 (日) 14:20
ジェダイナイト、9面のシークレットエリア誰か教えて下さい。

No. 557 # ムチなチュボ 1999/11/23 (火) 23:32
ネットワークプログラミングの基礎知識、凄いです。素晴らしいです。
私のような無知にでもできてしまってちょっと怖いです。
(ほとんど切り貼り状態なんですが・・)
FTPの項についてなんですが
「# FTPサーバに、子プロセスが待っているIPアドレスとポートの情報を渡す」
というのがありますよね。ftptras.plで初めて子プロセスは出てくるのでは。
それ以前の例示には「子プロセス」というコメントは必要無いのでは。
(ちょっとここで悩んでしまったので・・・。)

No. 558 # 68user 1999/11/23 (火) 23:51
> それ以前の例示には「子プロセス」というコメントは必要無いのでは。
どもども。ミスですね。直しておきます。

最初は fork しないと ftp クライアントは作れないと思ってました。
結局それは誤解だったので書き直したのですが、コメントの修正を
忘れてたようです。

# ftptrans で fork してるのも怪しい。ほんとに1プロセスで
# できないのかなぁ?

No. 559 # ムチなチュボー 1999/11/25 (木) 00:01
う〜〜ん。
ローカルのホスト名を得るにはどうすれば良いですか?
開いたSOCKETから手に入れる以外に適当な方法て無いですかしらん。
シェルコマンドは使わずにperlの関数だけで。

RFCの日本語訳ってほんと便利ですよね。感謝しながら読んでます。
PASVの返事て227だけみたいですね。あとは全部エラーみたい。
それと(x,x,x,x,x,x)の「括弧」が付かない場合もあるようですね。
正規表現もむつかしいけど頑張ってるとこおろです。

No. 560 # 68user 1999/11/25 (木) 01:31
> ローカルのホスト名を得るにはどうすれば良いですか?
試してませんが、とりあえず
    http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#ss2.24
    http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq9.html#How_do_I_find_out_my_hostname_do
ここらあたりでうまくいかないですか?

> あとは全部エラーみたい。
> それと(x,x,x,x,x,x)の「括弧」が付かない場合もあるようですね。
なるほど。ところで、こーゆーのがネットワークプログラムのヤな
ところですよね。相手があってのものだから「これで正しいかどうか」
「完璧かどうか」がわからないという。

あと、真面目に作って配布でもするつもりなら
    http://hp.vector.co.jp/authors/VA002682/rfc1123j.htm
も読んで下さい (もう読んでるかもしれませんが)。

# あと、data-connection の peer-port が 20(ftp-data) かどうかの
# チェックもね。

No. 561 # NET放浪人 1999/11/26 (金) 17:44
68USERさんの中で最も得意なプログラミング言語はなんですか?

No. 562 # 68user 1999/11/26 (金) 22:24
elisp です。

…ウソです。perl か C ですけど、人に誇れるほどの
レベルじゃないです。精進せねば。

No. 563 # ムチなチュボ〜 1999/11/28 (日) 00:50
色々ありがとうございました。

> 227だけみたい
たしかに一番上の桁だけ見ろってRFCに書いてありました。

perlて俺のような無知な初心者にも優しい言語ですね!
構文規則が緩いっていうんですか、括弧とか適当でいいし。
とりあえず構文と関数のリファレンスさえあればなんとなく
出来てしまう。ありがたいことです。
まあ…そのおかげかperl使いな人も俺のような駄目パーラから
超スゴイ人まで腐るほど沢山居るらしくてperlなんか今更
「多少」使えても何の自慢にもならないみたいなんですが…。

でもでもこれからもperlで遊ぶぜえ〜。
じゃあさよならあ〜。

No. 564 # 日向 1999/11/29 (月) 12:58
以前にPOSTに関して質問した者です。遅いレスですが…(^^;
どうやら、ソケットに送るPOST〜$messageは、
個別に送った場合、途中の\r\nにHTTPDが反応してしまうようです。
なので、$sendとか、適当な変数に全部繋げて代入し、
print SOCKET $send;
としなければならないようです。
HTTP/1.0を指定し、更にこの方法でやってみた所、POSTが成功しました。
ちなみに、HTTPバージョンを省略した場合は
HTTP/1.1とみなされるみたいです。(全部そうとは限らない…かな?)

No. 565 # 68user 1999/11/29 (月) 22:46
> HTTPバージョンを省略した場合は HTTP/1.1とみなされるみたいです。
省略すると HTTP/0.9 になります。0.9 では GET 以外使えませんし、
ヘッダも送れません。例えば
    GET /~foo/index.html
を送った時点で、サーバからレスポンスが返ってきます。なので、

> 途中の\r\nにHTTPDが反応してしまうようです。
これはそういうことじゃないでしょうか?

なお、HTTP 0.9 で
    POST /~foo/index.html
などとしようとすると、405 Method Not Allowed になるはずです。

No. 566 # 68user 1999/11/29 (月) 23:33
というわけで、
> $sendとか、適当な変数に全部繋げて代入し、
> print SOCKET $send; としなければならない
ということはあり得ないと思いますが、一応試してみたいので
よろしければその掲示板の URL を教えて下さい。

No. 567 # GAT 1999/11/30 (火) 07:38
おはようございます。

ネットワークプログラミングの基礎知識の
C言語でHTTPクライアントを作ってみよう(2)
ではperlと違いヘッダ部分が表示されてますよね?
あれを本体部だけ表示するようにするにはどうしたらいいんでしょう?
色々やってみましたがどうも上手くいかなくて…
「UNIXの場合」はfgets関数をソケット読み出しにも使えますけど
某Windowsは勝手が違うんです。。
# どーみてもUNIXの方がやりやすい
どんな感じかというのがhttp://www.nakka.com/inet/httpc.html
赤系の色で
「/* サーバからデータを受信する処理 */」
とか書かれてる辺りです。
なんとなく見るとやりにくいのがわかるかと^^;;
どうすればいいでしょうか?
思いついたのでいいですからレスください。
どうもアイデアが・・・・

No. 568 # 68user 1999/11/30 (火) 14:25
    while (1){
        char buf[BUF_LEN];
        int read_size;
        static int body_flg = 0;
        char *p;

        read_size = read(s,buf,BUF_LEN);
        if ( read_size > 0 ){
            if ( body_flg ){
                p = buf;
            } else if ( p = strstr(buf,"\r\n\r\n") ){ /* 空行はあるか? */
                p+=4; /* \r\n\r\n の分先に進める */
                read_size -= p-buf; /* サイズ調整 */
                body_flg = 1;
            }
            if ( body_flg ){
                write(1,p,read_size);
            }
        } else {
            break;
        }
    }
こんな感じでどうでしょうか?

No. 569 # 68user 1999/11/30 (火) 15:29
あ、全然ダメじゃん。
> } else if ( p = strstr(buf,"\r\n\r\n") ){
buf は \0 で terminate されてないし、そもそも
\r\n\r\n が1回で読める保証はなくて、ちょうど
境界にまたがってるかもしれない。

ま、そこらへんはよしなに。

No. 570 # k 1999/11/30 (火) 17:35
pingコマンドでは、ホスト名を指定することによって、
そのホスト名(またはIPアドレス)との接続確認が
できます。
これと同様に、そのホスト名(またはIPアドレス)の
特定のポート番号に対して、接続確認を行いたいの
ですが、なにか良い方法ないでしょうか?

No. 571 # 68user 1999/12/01 (水) 00:33
実際に connect するのはダメなんですか?
それ以外の方法はないと思います。多分。

No. 572 # ミレニアム [E-mail] 1999/12/01 (水) 02:33
本サイトはたまにではありますが参考にさせていただいております。
私も何か投稿させていただきたいと考えておりましたが、プログラミングサークル“ミレニアム”を立ち上げましたのでご紹介をさせていただきたいと思います。掲示板の案件と直接関係ないと思われますが容赦願います。
ミレニアムはサークルという体質を生かして医療・福祉・教育の分野で高機能・低価格ビジネスアプリケーション構築を目的としたプログラミングサークルであります。
現在、メンバーは15名程度でホームページを建設中であり、現在CGI等の組める方、VB、VC++、Delphi、Java、HTML、DTP(デザイン)の得意な方を募集致しております。メンバーは現職のプログラマー、DTP構築者、家庭の主婦などいろいろな方で構成されております。
ミレニアムに参加する条件としては本人に常識と責任感と好奇心が必要でありその他は問われません。
興味がございましたらメールにてお返事お願いいたします。

失礼いたしました。解からないことがありましたら私も投稿させていただくかもしれませんのでよろしくお願いいたします

No. 573 # らんらん [E-mail] 1999/12/01 (水) 10:15
はじめまして、いつもHP見さしていただいてます 感謝
winsockを(c言語で)使ってチャットのプログラムを書いてみようと思ったんですけれど、マルチスレッドタイプのサーバーでクライアントにsend()する時(多分IPマルチキャストっ奴を使うと思うんですけど)のやり方について何か情報お持ちでないでしょうか?
接続されたクライアント全てに同報送信できるようにしたいんですけれど、よろしくお願いします。
後、勝手にHPにリンク張ってしまったんですけどよろしかったでしょうか?
まずいようだったら連絡下さい

No. 574 # 68user 1999/12/01 (水) 13:41
マルチキャストするなら、TCP じゃなくて UDP になると思いますが、
そこらへんの基礎知識はありますか? あと、IPv4 ではマルチキャストは
optional なんですが、大抵の OS には実装されてるのかしら?

で、僕も興味はありますが、そこらへんはまだ自分のものにしていないので、
説明できないです。

http://X68000.startshop.co.jp/~68user/net/link-book.html
    「UNIX ネットワークプログラミング第2版 Vol.1」
にとっても詳しく書いてありますので、よかったら買ってみて下さい。
# 今説明しようとすると、この本の丸写しになってしまいますので。

> \r\n\r\n が1回で読める保証はなくて、
ここらへんのことについても、この本に詳しく書かれています。
要は1バイトずつ読めばいいんですが、毎回 read しては遅くなるので
先にバッファに読み込んだり、read しているときにシグナルが飛んできた
場合の EINTR などなど。

8000円出すだけで、5万円分くらいの知識が得られます。おすすめ。

> 勝手にHPにリンク張ってしまったんですけどよろしかったでしょうか?
どうぞ〜。

No. 575 # 日向 1999/12/01 (水) 16:10
>> $sendとか、適当な変数に全部繋げて代入し、
>> print SOCKET $send; としなければならない
>ということはあり得ない

確かにそうでした…$sendに全部代入するのと
HTTPバージョンを色々変えるのを同時に試してて混乱してたみたいです(汗)
というわけで、やっぱり繋げる必要はありませんでした。ハイ。
また、HTTPバージョン省略も0.9扱いになっているようでした。

でも省略すると0.9にされるというのはちょっと驚き。
これはサーバ側でそう設定している為ですよね…?という事は…
今時0.9なんて使わないし…1.0や1.1をデフォルト設定にしているサーバもあるんでしょうか?

No. 576 # 68user 1999/12/01 (水) 17:11
HTTP のバージョン省略時は 0.9 であると RFC で決まっています。
    http://X68000.startshop.co.jp/~68user/net/rfc.html
というより、「省略したもののみを 0.9 とみなす」と言った方が正しいかな。
GET /index.html HTTP/0.9 というリクエストはできないようなので。

No. 577 # らんらん 1999/12/02 (木) 12:32
返事ありがとうございます。
マルチキャストについてですが
winsock1,1ではoption扱いで正式サポートではなく
2,0ではサポートされてるようなんですが、いい情報がまだ得られていません。
もうちょっと調べて、うまくいったら報告します。
(今windowsでやってるんで68userさんはあまり興味ないかもしれませんが)

No. 578 # るん [E-mail] 1999/12/02 (木) 19:46
はじめまして。
「ネットワークプログラミングの基礎知識」読ませていただきました。
HTTPの初心者のため、大変勉強になりました。

この度proxyサーバを使って、URLを取ってくるシステムを開発しているのですが、うまく動作しません。
GETのレスポンスで、ヘッダでは「200 OK」が返ってきているのに、ヘッダしか取出せません。どんな原因が考えられるでしょうか。

環境は以下の通りです。
proxyサーバ:NetscapeProxyServer
取出すURLのあるサーバ:Apache 1.3.9

No. 579 # 68user 1999/12/03 (金) 02:50
> ヘッダしか取出せません。
    - どういうリクエストを送ったのか
    - 環境 (Windows など)
    - 何を実行したのか (telnet でやったとか perl で書いたとか)
    - どの URL を試しても同じ結果になるのか
    - 実際のコードは (perl と C 以外わかりませんけど)
などがわからないと何とも言えませんが、とりあえず telnet で
proxy サーバに繋げて、
    GET http://www.yahoo.co.jp/ HTTP/1.0
    Host: www.yahoo.co.jp
    (空行)
を試してみて下さい。

> (今windowsでやってるんで68userさんはあまり興味ないかもしれませんが)
最近はネットワークプログラミング自体に飽きてしまい、
3D にはまってたりします(^^;

ちょいと紹介しときますが、参考にしたのはこのサイトです。
とてもわかりやすく書かれているので、興味のある方はぜひ。
    http://www.cim.pe.u-tokyo.ac.jp/~mitani/Java/java3d/index.html

# 長年の夢であったポリゴンをぐりぐり回すのが実現できてうれしい。
# 今はテクスチャ貼ったりシェーディングかける方法を模索中…。
## ここらへんを解説してるサイトないかしら?

No. 580 # るん 1999/12/03 (金) 17:38
返事ありがとうございます。

> - どういうリクエストを送ったのか
> - 環境 (Windows など)
> - 何を実行したのか (telnet でやったとか perl で書いたとか)
> - どの URL を試しても同じ結果になるのか
> - 実際のコードは (perl と C 以外わかりませんけど)

環境:UNIX
言語:C言語でproxyサーバにはsocket通信でリクエストを送っています。
具体的には以下の内容をsendで送っています。
GET http://www.yahoo.co.jp/ HTTP/1.1
Host:www.yahoo.co.jp
(空行)

※proxyサーバが社内のマシンしかアクセスできない設定になっているので、
    実際にはwww.yahoo.co.jpの部分は社内のhost名を指定しています。

>> ヘッダしか取出せません。

この後、もうちょっと調べてみると、
一度目のrecvでレスポンスヘッダが送られてきて、
二度目のrecvでエンティティボディが取出されることがわかりました。
NetscapeProxyServerの仕様なのでしょうか。

あと、レスポンスヘッダ文字列の大文字小文字ですが、
本などでは"-"の後の文字は大文字なのですが、
上記の環境で行うと小文字になります。
(例)「Last-Modified」→「Last-modified」など。。。
これもNetscape Proxy Serverの仕様なのでしょうか。

御存知のことがあれば教えてください。

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