質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

4691閲覧

exeからphpにデータを渡す

g1mkt

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/11/15 15:58

編集2016/11/16 13:43

Apache上で常に動いているphp と visual studio C#で作成したexeでデータのやり取りを行いたいです。exeも常に動いております。

自分なりに調べましたが、常に動いているphpとexe間のデータのやりとりは見つかりませんでした。
ご教授、もしくは参考になりそうなリンク等有りましたら、よろしくお願いいたします。

###追記
情報不足で申し訳ございません。
apache上で動いているphpはwebアプリケーションです。
c# exeはデスクトップアプリケーションです。
これら二つは同じpc上で動作させます。

masa様が仰るプロセス間通信だと思われます。
hiim様のリンク回答を参考にし、模索して見ます。
プロセス間通信についても、もう少し調査してみます。進捗がありましたら、また、追記したいと思います。

###追記2
ttyp03様のご回答をもとに作成していく方向で決めました。
ご回答くださった皆様ありがとうございました。
ご回答くださった方々の意見をもとに勉強していきます。
またよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

Apache上で常に動いているphp

はwebアプリケーション?いわばウェブサイトという事でいいですか?

visual studio C#で作成したexe

というのはwindowsのデスクトップアプリケーション?でしょうか?またphpのウェブサイト(でいいのかな?)とvisual studio C#で作成したexe(デスクトップアプリケーションでいいのかな?)は別PCでしょうか?

apache上でphpが動作しているという事は、php側は特にポートを変更していなければ80ポート、プロトコルはHTTPで会話が可能

visual studio C#のソケットを使いhttp通信でデータのやり取りになるのではないでしょうか?
その際POSTデータでやり取り、key=>valueの形でデータを渡すのであれば通常のPOST通信ですが、そうではなくフリーフォーマットであればRAW POSTデータのやり取りをすれば良いと思います。

### 追記
C#からデータを投げる(POST)
http://sweep3092.hatenablog.com/entry/2014/12/11/183350

RAW POSTなら
http://stackoverflow.com/questions/3735988/how-to-post-raw-data-using-c-sharp-httpwebrequest

php側でRAW POSTを受け取る
http://d.hatena.ne.jp/nakamura001/20120921/1348242946

などを参考に、C# RAW POST PHPなどキーワード組み合わせてググったらいろいろ出てくるんじゃないでしょうか?

私が想定したphpはウェブサイト、C#はデスクトップアプリケーションだったとしたら
C#からphpへデータを投げてphpからC#へデータ(レスポンス)を返すという流れつまり通信はC#発(tcpipでいうC#がクライアント、phpがサーバー)は容易にできると思いますが、逆にphpからC#へデータを投げるというphp発の通信は極めて難しいと思います。

なのでC#がphpへポーリングするような作りで可能と思います。

投稿2016/11/15 16:32

編集2016/11/15 16:42
hiim

総合スコア1689

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

g1mkt

2016/11/16 13:34

hiim様 情報不足の中ご回答ありがとうございました。キーワード参考にググらせて頂きます。
guest

0

ベストアンサー

どこまで本格的な実装を目指しているのかにもよりますが、通常は他の回答にあるようにプロセス間通信を使うことになると思います。
ただそこまでしなくても、というのであれば、両アプリから参照できる共有ファイルを作って、互いに読み書きするという手法もできるかと思います。
仕様はわかりませんが、PHP側はウェブアプリとのことなのでリクエストされた時にしか動かないでしょうから、おそらく書き込みのみになると想像します。
そうなればPHPは処理した結果をファイルに出力、EXE側は定周期でファイルが更新されるのを監視して更新されたら読み取り、みたいな簡素な作りでいけるでしょう。
もちろんEXE側にリアルタイム性を求めるなら、この手法はおすすめしませんが、1秒程度の遅れ程度でも良いなら有効な方法かと思います。

追記
あ、質問タイトルがEXEからPHPって書いてあった。すみません。
上記のことは忘れてもらって構いませんが、逆パターンでもいけるかも?

投稿2016/11/16 00:07

編集2016/11/16 00:09
ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2016/11/16 01:19

なんでマイナス評価なのかわからん。 採用するしないは自由だと思うし、マイナスなら理由を書いてほしいですねぇ。
g1mkt

2016/11/16 01:42

ttyp様 ご回答ありがとうございます。ファイルを介すらやり方参考にさせていただきます。マイナス評価は、私がしたことでしょうか?そうでしたら申し訳有りません。訂正させていただきます。
ttyp03

2016/11/16 01:59

マイナス評価は誰がしたのかわからないんですよ。 コメント残してもらえればわかるんですけどね。 まあ、お気になさらず。
退会済みユーザー

退会済みユーザー

2016/11/16 02:23

私もこの方法が(先ずは)良いと思うので +1 させて頂きました。マイナスは無いですよねぇ…
guest

0

C#(Desktopアプリケーション)からWebサービスの利用方法としては、Apache+PHPでならSoapサービスを実装するのも手としてはあります。

C#からはWebServiceとしてこのSoapサービスを利用する形になります。
C#のコーディング上はWebServiceのインスタンスを取得し普通(?)にメソッドをCallできます。

(MSDN)Visual Studio の Web 参照

PHP側の実装はこのあたりを参考に。
PHP マニュアル 関数リファレンス ウェブサービス
SoapServer クラス

PHP5でSOAPを用いたブックマークサービスを作成する

投稿2016/11/16 02:14

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

g1mkt

2016/11/16 13:33

Y.H.様 ご回答有難うございます。SOAPというのは初めて聞きました。勉強させて頂きます。
guest

0

プロセス間通信で実装すれば良いのでは?

投稿2016/11/15 16:03

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

g1mkt

2016/11/16 13:36

Masa様 ご回答ありがとうございました。お恥ずかしながら、プロセス間通信という言葉、初耳でした。こちらもググらさせていただき、方法を探していきたいと思います。
MasahikoHirata

2016/11/16 13:40

プロセス間通信は過去からよく使われています。(過去に私も携帯電話関係の開発などで使ってました)。一般的な技術の習得がある意味、バグの少ない(目的に近い)開発になります。まあバグから学ぶ所もありますが、結果が早い方が良しとして。頑張って下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問