|
> ローカルのホスト名を得るにはどうすれば良いですか? 試してませんが、とりあえず 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) かどうかの # チェックもね。 |
|
68USERさんの中で最も得意なプログラミング言語はなんですか? |
|
elisp です。 …ウソです。perl か C ですけど、人に誇れるほどの レベルじゃないです。精進せねば。 |
|
色々ありがとうございました。 > 227だけみたい たしかに一番上の桁だけ見ろってRFCに書いてありました。 perlて俺のような無知な初心者にも優しい言語ですね! 構文規則が緩いっていうんですか、括弧とか適当でいいし。 とりあえず構文と関数のリファレンスさえあればなんとなく 出来てしまう。ありがたいことです。 まあ…そのおかげかperl使いな人も俺のような駄目パーラから 超スゴイ人まで腐るほど沢山居るらしくてperlなんか今更 「多少」使えても何の自慢にもならないみたいなんですが…。 でもでもこれからもperlで遊ぶぜえ〜。 じゃあさよならあ〜。 |
|
以前にPOSTに関して質問した者です。遅いレスですが…(^^; どうやら、ソケットに送るPOST〜$messageは、 個別に送った場合、途中の\r\nにHTTPDが反応してしまうようです。 なので、$sendとか、適当な変数に全部繋げて代入し、 print SOCKET $send; としなければならないようです。 HTTP/1.0を指定し、更にこの方法でやってみた所、POSTが成功しました。 ちなみに、HTTPバージョンを省略した場合は HTTP/1.1とみなされるみたいです。(全部そうとは限らない…かな?) |
|
> 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 になるはずです。 |
|
というわけで、 > $sendとか、適当な変数に全部繋げて代入し、 > print SOCKET $send; としなければならない ということはあり得ないと思いますが、一応試してみたいので よろしければその掲示板の URL を教えて下さい。 |
|
おはようございます。 ネットワークプログラミングの基礎知識の C言語でHTTPクライアントを作ってみよう(2) ではperlと違いヘッダ部分が表示されてますよね? あれを本体部だけ表示するようにするにはどうしたらいいんでしょう? 色々やってみましたがどうも上手くいかなくて… 「UNIXの場合」はfgets関数をソケット読み出しにも使えますけど 某Windowsは勝手が違うんです。。 # どーみてもUNIXの方がやりやすい どんな感じかというのがhttp://www.nakka.com/inet/httpc.htmlの 赤系の色で 「/* サーバからデータを受信する処理 */」 とか書かれてる辺りです。 なんとなく見るとやりにくいのがわかるかと^^;; どうすればいいでしょうか? 思いついたのでいいですからレスください。 どうもアイデアが・・・・ |
|
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; } } こんな感じでどうでしょうか? |
|
あ、全然ダメじゃん。 > } else if ( p = strstr(buf,"\r\n\r\n") ){ buf は \0 で terminate されてないし、そもそも \r\n\r\n が1回で読める保証はなくて、ちょうど 境界にまたがってるかもしれない。 ま、そこらへんはよしなに。 |
|
pingコマンドでは、ホスト名を指定することによって、 そのホスト名(またはIPアドレス)との接続確認が できます。 これと同様に、そのホスト名(またはIPアドレス)の 特定のポート番号に対して、接続確認を行いたいの ですが、なにか良い方法ないでしょうか? |
|
実際に connect するのはダメなんですか? それ以外の方法はないと思います。多分。 |
|
本サイトはたまにではありますが参考にさせていただいております。 私も何か投稿させていただきたいと考えておりましたが、プログラミングサークル“ミレニアム”を立ち上げましたのでご紹介をさせていただきたいと思います。掲示板の案件と直接関係ないと思われますが容赦願います。 ミレニアムはサークルという体質を生かして医療・福祉・教育の分野で高機能・低価格ビジネスアプリケーション構築を目的としたプログラミングサークルであります。 現在、メンバーは15名程度でホームページを建設中であり、現在CGI等の組める方、VB、VC++、Delphi、Java、HTML、DTP(デザイン)の得意な方を募集致しております。メンバーは現職のプログラマー、DTP構築者、家庭の主婦などいろいろな方で構成されております。 ミレニアムに参加する条件としては本人に常識と責任感と好奇心が必要でありその他は問われません。 興味がございましたらメールにてお返事お願いいたします。 失礼いたしました。解からないことがありましたら私も投稿させていただくかもしれませんのでよろしくお願いいたします |