|
教えていただきたいのですが、HTTPでファイル転送するものをC言語で作りたいのですが可能でしょうか? また参考をなるものがありましたら教えて頂けないでしょうか。 よろしくお願いします。 |
|
すいませんが、どなたか文字列置換に詳しい方がいらっしゃいましたら教えていただきたいんですけど、あるディレクトリ以下の全てのファイルを対象に文字列置換を行う際の書式を教えて下さい。 で、文字列中に記号や空白が含まれるので、例えば「top.test/mail.html」という文字列を「i = window.close();」という文字列に置換する際はどういったコーディングになるのか教えて頂けたらさいわいです。 sedコマンド等で色々と試したのですがどうしても上手く行きません。 どなたかわかる方いらっしゃいましたら教えて下さい。 もう3日ほど悩んでいます。。。お願いします。 |
|
>>2841 かず Perlで、 s#top\.test/mail\.html#i = window.close();#g; とか・・・ s#\Qtop.test/mail.html\E#i = window.close();#g; |
|
お世話になっています。 初心者の質問で申し訳がありません。 MA-300というハードにPostgreSQLをインストールをしました。 そこで、自動起動を行いたいのですが、 /etc/rc.d/rc.local に起動コマンドを書き込んでも起動しません。(red hatでは起動したので、コマンドは正しいかと思います。) 私の初心者ながらの推測では、起動時にrc.localは呼ばれていない気がします。(rc.localの中身は空なので、現状では呼ばれなくてもさしあたりがない。) そこで、またまた初心者的な発想なのかもしれませが、 /etc/rc.d/rc.sysinit に、直接コマンドを書き込んでもいいのでしょうか? ご教授ください。 また、他にいい方法があれば、お教え願います。 よろしくお願いします。 |
|
>> 早速1か2の方法でためしてみたいと思います >という選択をするのはそれはそれで構わないのですが、チャットアプリを >作ることが目的ではなく、TCP/IP プログラミングの勉強が目的なのなら、 >多分遠回りになります。 すみません少し勘違いしてました 目的はTCP/IPプログラミングの勉強です チャット機能を持ったプログラムはTCP/IPを理解する上で作りたいと思ってるものです で質問なのですがサーバプログラムは作成しないといけないのでしょうか? プロバイダーのサーバにつないでMSNメッセンジャーのような感じで作りたいのですが |
|
>>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 も} 目的なのですか? |