No.6ベストアンサー
- 回答日時:
fopenはファイルをストリームとしてオープンする関数なので、できません。
どうしても、ということであれば、以下のようにすれば可能です。
BSDやLinuxをはじめとする環境で、いわゆる"the unix berkley socket library"をつかえるなら、socket(2)でSOCK_STREAMを指定して得られたディスクリプタをconnect(2)成功後にfdopen(3)に渡してやれば、ストリームとして処理することも可能です。この手法はwindows上ではcygwinで利用可能です。残念ながらWinsockではソケットハンドルはファイルディスクリプタと等価ではないので、この手法は使えません。
ただし、この場合はTCP上での通信がすべてこのストリーム上に乗るので、HTTPであれば
GET /hogehoge.php?A=1 HTTP/1.1
Host: www.example.com
(以下略)
などと送信しなければなりませんし、
HTTP/1.1 200 OK
Date: ~~~~~
(以下略)
などと全部のHTTP応答の処理もする必要があります。
多分、あなたが思っているものとは違ったのではないでしょうか。
不明確な質問にも関わらず、お答え頂きありがとうございます。UNIXを使っています。
C言語のみで実装するのは、ちょっと難しそうですね。。実は、もっと簡単にいくのでは、と甘く見ていました。。せっかく方法を教えていただいたのに本当に申し訳ないですが、知識不足でわからない点もあるので、調べて見ようと思います。
No.5
- 回答日時:
> プログラム上でURLをオープンして、
> そこに書いてある文字が0か1かによって、
> 処理を制御したかったのですが、不可能なのでしょうか。。。。
ハードウェアや運用環境まで含めて、何を使ってもよいのであれば、可能か不可能化でいえば可能です。「C言語」だけで実現するのであれば、一般的には不可能です。
つまり、ここから先のことが知りたければ、最低限どんな処理系を使っているかぐらいは書きましょう。
例えば、インターネットに接続できないような環境であれば、どんなに頑張っても不可能です。マイコン用の処理系のように、fopen等ストリームライブラリの低水準関数をユーザーが定義するようになっている処理系であれば、LANコントローラがあるなら、プロトコルスタックを自作するなりして、fopenやfgetc等で使えるようにすることも可能といえば可能です。
No.4
- 回答日時:
#3です。
fopenでは、不可能と考えても支障はないと思います。
別の手段が必要です。
環境依存なので環境が分からないと使えるかも分かりませんが、例えば Windows であれば、Internet API (InternetOpenUrl 等)が比較的簡単に URL の先を開ける手段かと思います。
# もちろん、Windows 以外の OS 上では別の手段が必要です。
# http のプロトコルに従い Socket で処理を書く手段もあります。
No.3
- 回答日時:
単に文字列なので指定はできると思いますが、おそらくお望みの動作をせずに、オープン失敗のエラーが返るものと思われます。
fopen について規格書(ISO/IEC9899:1999)では、以下のように規定されています。
<引用>
2 The fopen function opens the file whose name is the string pointed to by filename, and associates a stream with it.
</引用>
URL を filename として取り扱うような filesystem 上で
のお話か、標準ライブラリ実装の独自拡張なら取り扱えるかもしれませんが、現行の PC 上であれば、おそらく取り扱えない実装の方が一般的と思います。
結果として、前述のようにエラーが返る可能性が最も高く、仮にオープンできたとしても、環境依存にならざるをえません。
皆様、ご回答ありがとうございます。
プログラム上でURLをオープンして、
そこに書いてある文字が0か1かによって、
処理を制御したかったのですが、不可能なのでしょうか。。。。
No.2
- 回答日時:
> fopenでファイルを開くとき、
> fopen("http://~~~.php?A=1","r")
> のようにURLを指定できるのでしょうか。
できるかどうかは、標準ライブラリの実装に依存します。
No.1
- 回答日時:
fopen()はstdio.hで(多分)定義されている関数なので、ネットワークアクセスは出来ません。
ネットワークポートを使用したI/Oはそれ専用の関数があるのでそちらを利用することになります。
Windowsならwinsock.hやwinsok2.h。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
インスタンス化に伴うメモリ消...
-
アクセスクライアントごとにタ...
-
phpの処理中に画面表示ををする...
-
任意のサイトのテキストボック...
-
Linuxサーバに移行とphpexcel出力
-
Subversionのリポジトリの削除
-
PHPにおける時間計算、時間足し...
-
【file_exists】ファイルが存在...
-
onedrive にexcelファイルをア...
-
xamppでGDを使いたい。
-
VBSの「MsgBox」について
-
SSI される .inc ファイル内に ...
-
phpのクラスにて別ファイルの変...
-
php.ini を設定を変更すると再...
-
imagecreatetruecolor()関数で...
-
php,mysqlにて画像パス保存/表...
-
ファイルのアップロードで、フ...
-
PythonのTkinter詳しい方へ。画...
-
PHPでネットワークドライブのop...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
PHPが処理を途中でやめる。原因...
-
Cronで同じ処理を複数同時に実...
-
phpの処理中に画面表示ををする...
-
3の倍数の和
-
インスタンス化に伴うメモリ消...
-
関数の前についている「@」の意...
-
web画面から呼び出したphp処理...
-
submitボタンを自動クリック
-
PHPのSmartyについて質問です。...
-
includeしたファイルに変数を持...
-
PHPで文字列(日本語)の比較
-
プログラム内で処理中断後も継...
-
チェックボックスをビット演算...
-
Smartyにて、文字検索
-
タイムアウト時に次の処理へ移...
-
csvファイルの読込みとソート
-
VBAからPHPを実行(キック)したい
-
PHPの複数関数非同期実行方法を...
-
Linuxサーバに移行とphpexcel出力
おすすめ情報