• 締切済み

Flashの通信について

通信についての質問です。現在Flashでオンラインゲームを作っています。 通信は完全に同期の必要はありません(5秒~5分更新で通信状況により非同期で変更しています)がデータの欠落、書き換えによる不正行為を出来るだけ無くすためにサーバー側にデータを全て保存しPHPで処理してそれを読み出す仕組みにしています。 現在HTTP通信で制作しているのですがHTTP通信だとHTTPヘッダにFlashから送信したPOST値が表示されて内容が見えてしまったりFirefoxだとステータスバーに"データを転送しています"と表示されてしまいます。 この2つの問題を解決する方法はないでしょうか? また@gamesなどのオンラインゲームのFlashは一般的にどのような方法で通信を行っているのでしょうか?回答宜しくお願いします。 *Socket通信も考えたのですがそこまでリアルタイム性を要求していないのとサーバー側にデータを保存して読み出す必要があるため余り向いていないと思い断念しました。

  • enshi
  • お礼率68% (43/63)
  • Flash
  • 回答数2
  • ありがとう数0

みんなの回答

  • cspl
  • ベストアンサー率83% (55/66)
回答No.2

1.HTTPヘッダにFlashから送信したPOST値が表示されて内容が見えてしまったり これについてはPOSTするデータを暗号化して送信することで回避できます。実際セッション情報を渡すような案件で使用したこともあります。 参考: http://q.hatena.ne.jp/1200732246 ですが、リンク先にもある通り、swf自体を解析されてしまえばどうしようもありません。 2.Firefoxだとステータスバーに"データを転送しています"と表示されてしまいます これはFlashを使用する限り、どうしようもないでしょうね。

  • atse
  • ベストアンサー率83% (36/43)
回答No.1

そういうことを懸念する場合は、 FlashをUIとしてしか使わないような作りになると思います。 FlashとPHPの組み合わせならば、PHPでオンラインゲームを作り、 その操作をFlashでやってもらうという形です。 例えば、スロットマシーンがあるとすれば、 Flash上では、BET枚数とスタートボタンを押したことだけをサーバーに送り、 PHP側でそれを受け、当たり外れを出し、ユーザの所持メダル増減等を処理します。 その処理後、Flash側にスロットの結果(絵柄の並び等)や所持メダル枚数を返してあげ、 Flashはただそれに沿って、結果を表示するだけということです。 ------------- 「大当たりでメダルを100枚ゲット」という結果をサーバーに送る等、 アクションの結果をFlash側で出してサーバーに送信する仕組みだと、 それを書き換えられてしまう可能性があるので、 基本的にその結果は、サーバーサイドで出すことが不正の抑制に繋がります。 また、サーバ側のプレイヤー判別に使うIDやPASSは、原則的にセッションです。 Flash側から通信ごとに毎回送るといった方法は危険です。

関連するQ&A

  • Flashでのサーバとの通信について

    ブラウザ上で動作するFlashプログラムを計画しています。 私は DelphiやC++、PHP、Java 等は開発経験がありますが、今回の Flash は全く初めてなのでよくわからないので教えてください。 作成したいプログラムは以下のようなものです。 (1)サーバのデータベース(PostgreSQL)に1万件程度の情報が登録されている (2)Flash上でキーワードを入力し検索ボタンをクリックすると該当データが一覧表示される (3)一覧の中から希望のデータを選択すると、詳細情報が表示される。 (4)詳細情報はテキスト情報と、1件につきBMP画像データが10個程度。 ローカルでの画面表示はできそうな気がするのですが、サーバとの通信(特に、BMP画像データ転送)をどのようにすればよいのかわかりません。 サーバとの通信は、XMLSoket というものがあることがわかったのですが、 簡単なテキスト情報のやりとりはできそうですが、BMP画像データを受信できるのかわかりません。 サーバ側はすでにPHPで稼働していますので、HTTPでURLを投げて結果を受け取ることができると良いのですが、そうはいかないのでしょうか。 このような場合、Adobe Air を使うと統合的に扱うことができそうですが、まずは Air を使わずに Flash のみでできないか検討したいと思います(←この考え方が間違ってますでしょうか?) Flash のみで実現するのが難しければ、 (1)HTML+Ajax (2)Adobe Air というような感じになるかと思います。これらのメリットデメリットなどもあわせて教えて頂けると助かります。

    • ベストアンサー
    • Flash
  • FLASHでネット通信

    オンラインカードゲーム「アルテイル」等のように、 FLASHを用いたネット対戦(通信)は、 FLASHのみで行えるのでしょうか? それとも他のものと連携しなければならないのでしょうか。 よろしければ通信を行う具体的な方法も一緒に 教えていただけると幸いです。

    • ベストアンサー
    • Flash
  • javaとFlashの通信について

    初めて質問させていただきます。 現在JavaとFlashでWebアプリの勉強をしております。 JavaとFlash個々で単体として動作させることは 今までしてきました。 今回取り組んでいるのが、Flashで画面側を作成して、 Javaでサーバー側を作成するというものです。 現在は 画面側をFlashでサーバー側をJavaで作成していて、 サーバー側はXMLをFlashから受取り、XMLで返す。 画面側はXMLをJavaから受取り、XMLで返す。 そこまではわかるようになりました。 ここで質問なのですが、 Flashの動作として、「クラスを指定してそこに XMLを渡し、また受け取る」その方法がわかりません。 私が調べた中では、URLVariables クラスの使用、 XMLソケットを使用するという方法があることがわかったのですが、 URLVariablesを使用した場合、 送信先のURLを記入しないということで、Java側はまだeclipse上で 作成しただけなので、指定できないと考えていて、 XMLソケットを使用した場合、 接続方法まではインターネットで調べることができ実装することが できているのですが、そのあとのXMLで送受信する方法がなかなか 見つからず実装段階まで至っていません。 また、 サーバー側はサーバー側にアップしておかないと通信できないのか Flashと同じ保存場所でないといけないのかという点と その通信方法のActionScriptの書き方を教えていただけないでしょうか。 参考にさせていただきたいです。 宜しくお願い致します。 tomcat:6.0.18 eclipse:3.4.1 Flash:CS4 ActionScript:3.0 OS:Windows Vista

  • フラッシュゲームを保存するのって・・・

    モバゲータウンやフラッシュゲーム集みたいなところのフラッシュゲームをデータフォルダに保存するのって違法なんですか?あと保存したフラッシュゲームを起動すると通信ってするんですか?携帯はauを使っています。かなり気になっているので教えてください。

  • フラッシュが保存できない?

    SWF Cache Viewerというものを使って、 フラッシュのゲームをデスクトップに保存したのですが、インターネットに繋がないとそのゲームが出来ません。 オフラインで保存したファイルをウィンドウにドラッグして遊ぼうとすると画面がかわら無いままです。 でもオンラインだと普通に出来ます。 SWF Cache Viewerを起動すると右側に今まで見たフラッシュが表示されるのですが、 このゲームだけは右側の画面が真っ白で何も表示されません(オンラインでもオフラインでも) なぜでしょうか?またどうすればオフラインでも遊べるようになりますか?

  • こちらからのデータを保存しているFLASHのゲームを教えてください

    FLASHってサーバーにデータを書き込む事が出来たんですね。 そこで質問です。 FLASHを使った、ブラウザで出来るゲームで、こちらからの 送信データを明らかにサーバーに保存しているタイプのものを教えてください。 イメージとしてはブラウザ上でRPGが出来ちゃって、フォームの 書き込むボタンとか押してないのに、ブラウザを閉じてまた繋ぐと続きから出来る、 といった感じのものです。 どこが一番興味があるかというと、FLASHでデータを保存しつつやるゲームの ロード時間がどのくらいかな、そういうレスポンスの悪くなりがちな部分を どうやって抑えているのかな、どこまで軽く出来るのかな、といった部分です。 よろしくお願いします。

  • FLASHでフォーム認証をする場合に

    FLASHにてログインフォームを作成しようと考えています。 そこで疑問に思ったのですが、画面遷移を変えずにFLASHにてXMLインスタンスなどで非同期に、パスワードを送信した場合、 ログイン成功した場合、FLASHにて値を引き受けることなく、サーバ側でリダイレクトをかけられるでしょうか? 非同期で通信している場合、その通信に対してリダレクとをかけても、ブラウザはリダイレクトされないような気がしましたので、経験のある方いらっしゃいましたらご教授いただけませんでしょうか?

    • ベストアンサー
    • Flash
  • ソケット通信(telnet)を行いたい

    現在、クライアントプログラムをアプレットで作ってます。 サーバ側はsocketで通信できる状態で、telnetで会話できます。 そこで質問なのですが、クライアント側でのsocket通信時の手順がわかりません。。 ソケットの入門書でわかったのはここまでです。 Socket s = new Socket("10.255.50.14", 23); でソケットを作るところはわかるのですが、そこからの手順がわかりません。。 ここから、connectとか使うのでしょうが、、 どなたかご存知の方がいらっしゃいましたらお教え願いたいと思います。

    • ベストアンサー
    • Java
  • windows7で通信プログラムがうまくいきません。

    windows7で通信プログラムがうまくいきません。 XPの時にCで作った単純なHTTP通信プログラムが7だと動作不慮を起こしてしまいます。 サーバー側(centOS)では送ったデータはしっかりと受信できているのですが、そのデータをクライアント(Win7)に送り返すと、データの前半はしっかり受け取っているのですが、後半が壊れて・・・みたいなのがずっと無限に続いて、通信プログラムがとまらなくなるのです。 これって、Win7のせいですか? それとも、やっぱり僕のプログラムがおかしいのでしょうか?

  • ソケット通信において、サーバからクライアントに任意のタイミングでデータを送る方法

    ソケット通信において、接続されているクライアントに対しサーバ側から任意のタイミングでデータ送るにはどんな方法があるか教えてください。 例えば1分ごとに、接続されているクライアント全体にメッセージを送りたい、といった場合にどうすればよいでしょうか。 ちなみに対戦ゲームのようなものを作ろうと思っています。 クライアントはFlash、サーバはperlで開発しています。 クライアントからのデータに応じて何かを返すところまではできたのですが、サーバ側をトリガーとしてデータを送る手段がわからなかったので質問しました。 よろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう