|
>>2840 紅絹 > HTTPでファイル転送するものをC言語で作りたいのですが可能でしょうか? やろうと思えば何だって可能ですが、そもそもファイル転送って何ですか? ファイルを GET することですか? それとも http://tohoho.wakusei.ne.jp/wwwxx034.htm のようにファイルをアップロードすることですか? >>2843 シゲ > /etc/rc.d/rc.local に起動コマンドを書き込んでも起動しません。 Linux なら http://www.zdnet.co.jp/help/howto/linux/0007master/01/08.html のように S99PostgrSQL と K99PostgreSQL を作るのが普通だと思います。 >>2844 Tetsu > で質問なのですがサーバプログラムは作成しないといけないので > しょうか? プロバイダーのサーバにつないでMSNメッセンジャーの > ような感じで作りたいのですが IRC や ICQ や MSN メッセンジャーのように、既にどこかにサーバが 立ち上がっているのなら、わざわざサーバは作らなくてもいいです。 ただし、こういうのを読んでプロトコルを理解する必要があります。 IRC: http://www3.alpha-net.ne.jp/users/tycho/mokuji.htm ICQ: http://www.d.kth.se/~d95-mih/icq/ MSN メッセンジャー: http://www.tlsecurity.net/Textware/Misc/draft-movva-msn-messenger-protocol-00.txt (これは古い) 作るのにとても苦労するでしょうけど、まぁこういうのが好きならば 結構楽しいと思います。 苦労しつつも楽しんでいる人々: http://pc.2ch.net/test/read.cgi/tech/1006154451/ |
|
マウント、シェア関係はほとんど解決できました。 1つ解らないことがあるので、教えてください。 sunOS Solaris7 を使用しています。 NFS サーバーで NFS サービスの実行があるのですが dfmountsコマンドを実行したいとき、どのデーモンを起動すればいいのか? mountの場合、mountdプロセスが起動していれば、mountコマンドが実行できました。 |
|
教えてください。 現在POSTをつかったHTTPクライアントをC言語で作成しているのですが、[HTTPクライアントを作ってみよう]のPOSTメソッドを参考に sprintf(send_buf, "POST %s HTTP/1.0 \r\n", path); write(s, send_buf, strlen(send_buf)); sprintf(send_buf, "Content-Length:8\r\n"); write(s, send_buf, strlen(send_buf)); sprintf(send_buf, "Content-Type:text/plain\r\n", path); write(s, send_buf, strlen(send_buf)); sprintf(send_buf, "\r\n"); write(s, send_buf, strlen(send_buf)); sprintf(send_buf,"NAME=aaa\r\n"); write(s, send_buf, strlen(send_buf)); という風に作ってみたのですが、ヘッダの方は正常に送信されている みたいですが、パラメータが正常に送信されていないようなんです。 ご指摘よろしくお願いします。 |
|
教えてくれた方、ありがとうございました。 その後四苦八苦してなんとか自分で解決できました。 ありがとうございました。 |
|
ご回答ありがとうございます。 ファイル転送についてですが、GETとアップロードの両方おこなうものを作りたいと思っています。説明不足で申し訳ありませんでした。 |
|
はじめまして、いつもお世話になっております PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら タイムアウト処理を、と言ったことをしたいのですが、以下のプログラムでは うまく行きませんでした。TCPdumpで見てたところ、何回もSYNを投げなおした後 数分後にやっとエラーメッセージを表示してくれます。 よくよく見てみたところ、リトライの間隔がTimeOutの設定に関係なく 最初は3秒、次が6秒、12,24,48秒となっていて最後に96秒待った後 エラーメッセージを出す動きをしていました。 何かアドバイスなど有りましたらよろしくお願いいたします なお、PerlのVersionはThis is perl, v5.6.1 built for i386-linux-thread-multi です $socket = new IO::Socket::INET ( PeerAddr => "$address", PeerPort => "$port", Proto => 'tcp', TimeOut => 10 ); unless ($socket) { print STDERR "Connection Error at $date\n"; close($socket); } |
|
>>2850 しっぽ > PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら その辺を管理するのは OS の TCP スタックなので、プログラム側 からはどうにもなりません。 > よくよく見てみたところ、リトライの間隔がTimeOutの設定に関係なく > 最初は3秒、次が6秒、12,24,48秒となっていて最後に96秒待った後 > エラーメッセージを出す動きをしていました。 これも、そういうものです。 Solaris だとタイムアウトまでの時間を変更できたしますが、その他の OS では変更できない可能性が高いです。 もし connect 時のタイムアウト処理をしたいという目的ならば、 ノンブロッキングソケットを使いましょう。 >>2847 mattu > パラメータが正常に送信されていないようなんです。 その判断が間違っているような気がします。そう判断するに至った 根拠が明示されていないので、ただのあてずっぽうですが。 |
|
ご回答ありがとうございます。 別にあてずっぽうではなく、サーバ側でデバックにて確認してみると、渡しているデータが入ってなかったのと、渡されたヘッダ・パラメータがファイルに出力されるようにしており、JAVAで作成したものでしたら正常に出力されるのですが、Cで作成したもので試してみるとヘッダの部分のみ出力されるのでそう思いました。デバック等にはVAJを使用しております。 言葉不足ですみませんでした。 |
|
>>2852 mattu - ボディの最後の \r\n は不要 (もし \r\n を付けるなら Content-Length は 10 であるべき。でも \r\n 付けていいのかな?) - リクエストに Content-Type ヘッダは不要 という点を直しても まだボディが渡らないようなら、その C のプログラムが おかしいんだと思います (てゆーか、Java でうまくいって C でうまくいかない なら、C の方を疑うべきでしょう)。 詳しくはこちらなど。http://www.studyinghttp.net/headers.html |
|
>>2845出来ました。ありがとうございます。 |
|
教えてください。 showmountコマンドは、OSのサポートバージョン等が制限されていますか。 showmountコマンドの実行制限が何かありましたら、教えてください。 |
|
ご回答ありがとうございます Cで作るHTTPクライアントの件ですが、やはりボディが渡りません。 ソースの方を確認しましたが、おかしいと思われる箇所は見つかりませんでした。 環境が原因で渡らないというのはあるんでしょうか? 現在はUNIX上でコンパイル・実行をしてWin2000上のVAJにつないでいるんですが、関係あるのでしょうか? また、ボディの書き方で何か注意しとくべきことありますでしょうか? よろしくお願いします。 |
|
>>2856 mattu > ボディの書き方で何か注意しとくべきことありますでしょうか? 結局何をどうしたのかわからないので、何とも言えません。 - VAJ をやめて別のサーバ (Apache など) にしてみる - パケットをモニタして、java 版と C 版の違いを調べる あたりをやれば何かわかるんじゃないでしょうか。 >>2856 mattu >>2855 シド とりあえず http://www.hyuki.com/writing/techask.html を読んでみてください。 |
|
>>2851 68user ご回答ありがとうございます そんな気はしてたのですが、やっぱりそうですか ただ、TimeOut => 10 の所は何に反映されるのかってのがちょっと気になりました。 確か<$socket>やsysreadで読んだときに読むべきデータがないと TimeOutの時間を過ぎても返ってこなかったと思いますので… >ノンブロッキングソケットを使いましょう。 これってつまりは「読むべきデータが無いときに待たない」って 事ですよね。Perlでは使えますでしょうか?? 確立時の話じゃないですけど、Cのrecvなんかは待たないので 便利だったり不便だったりといった感じではあったのですが… |
|
>>2850 しっぽ > PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら > タイムアウト処理を、と言ったことをしたいのですが この目的を聞かせてください。connect で数分待ってしまうのがイヤだから なんとかしたい、ということだと受け取ったのですが、 > Cのrecvなんかは ということは、read/write のタイムアウト管理 {が or も} 目的なのですか? |
|
>>2850 しっぽ IO::Socket::INETなんて高級な物を何故そこで使うのかがわかりませんが、 http://www.cotse.com/sw/portscan/halfscan.c のプログラムと同等のことをPerlからやりたいなら、 http://search.cpan.org/doc/SKOLYCHEV/Net-RawIP-0.09d/RawIP.pm でなんとかできませんか? libpcapのラッパーなのでそれがmakeに要る ようです。 タイムアウトは、 >なお、PerlのVersionはThis is perl, v5.6.1 built for i386-linux-thread-multi です とのことですから、threadを使ってなんとかできそうですが Perlのthreadなんて使ったこと無いのでどうなのか知りません。 Rubyなら http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-j.html なんてのもありますがこっちは目的の機能は無いようにみえます。 |
|
未だRedhatで名前解決できず、気が向いては眺め、弱っています。 Redhat7.1.94(雑誌に付属)を再インストールしてみましたが、 症状は変わりませんでした。 >>2814 68user [netstat -s]は、どういった項目をどのような観点から観察したらよいでしょうか? 使ったことも知識も無いので、よかったら今後のためにもアドバイスください。 >>2779 has いまさら経緯の説明をはじめるのも遅すぎかとは思うのですが、 そもそもこういった状態になったのは、LANからインターネットへの回線が ISDNからADSLに変わり、それと同時に各ユーザマシンに割り当てられるIPが グローバルIPからプライベートIPに変わってからでした。 それまではRedhatからでも名前解決に時間がかかりながらも なんとかアクセスできていました。 # Win2kとのデュアルブートなんですが、ADSLになる以前からも、 # Win2kは素早く名前解決できてRedhatで時間がかかるという差が # あったことが、既におかしかったのかもしれません… とりあえず現在の状況はこんな感じでうまくいっていません。 以上ご報告まで。 |