• 締切済み

websocket 双方向通信

こんにちは、 現在ブラウザハックという本で学習しているのですが、 いまいちwebsocketを使った双方向通信という方法を使った 方法が解りません。 firefoxでrequestを送って動作を学習しようと思うのですが どういう風にやったら良いでしょうか? ご教示お願いします。 ホストOS:windows10 ゲストOS:kalilinux

みんなの回答

回答No.6

このエラー複数の原因があったはずで、 これだ!と絞れない感じだったはずですが。 https://gendosu.jp/archives/1171 これも原因としてはありえるし。ほかもあるのですが。 そのPHPではなく、普通にHTMLのファイルだとして、 80でも443でも正しく送り出せていますか? 私の方では、そのサンプルを80でも443でも 正常に動作しており、直接関係がないように思えます。 なお、httpdにmod_sslを入れた直後は、 私も妙なエラーと毎回戦ってる気はしますが。 (鶏が先か卵が先か問題を毎回やってますね) ひとまず、今回のサンプルは関係がない所での エラーだと思いますよ。それ。

voltage999
質問者

お礼

回答ありがとうございます。 htmlだと問題なく開けました。

voltage999
質問者

補足

Documentrootのファイルが今調べたら入ってませんでした。 httpd.confもなければ/var/www/htmlにも入ってなかったです。 httpd -Vでも見つからないです。 とりあえずhttpd.confとそのファイルの内容を改めて作りたいのですが。

全文を見る
すると、全ての回答が全文表示されます。
回答No.5

SSL received a record that exceeded the maximum permissible ↑これ、HTTPSでしかでないはず。 なぜ、443ポートを使ってるのでしょう? ポートは80ポートでまず試すことをお勧めします。 当然アドレスもHTTPで始まる。 このサンプルそのものは、SSLに依存してないので、 どちらでも動作しますよ。 という事でまず、サーバーの設定の確認をお願いしたく。

voltage999
質問者

お礼

いえ、httpポートでもhttpsでも出てきてしまいます。 index.php server.phpどちらもポートの設定で80番にしました。 それでアクセスした所、そのような状態になってしまいます。

voltage999
質問者

補足

書く場所なかったので、こっちに最新補足書きます。 └─$ php -q server.php PHP Notice: Undefined index: Sec-WebSocket-Key in /var/www/html/server.php on line 140 PHP Warning: socket_getpeername(): unable to retrieve peer name [107]: Transport endpoint is not connected in /var/www/html/server.php on line 35 PHP Warning: socket_getpeername(): unable to retrieve peer name [107]: Transport endpoint is not connected in /var/www/html/server.php on line 66 PHP Notice: Undefined index: Sec-WebSocket-Key in /var/www/html/server.php on line 140 PHP Notice: Undefined index: Sec-WebSocket-Key in /var/www/html/server.php on line 140 PHP Notice: Undefined index: Sec-WebSocket-Key in /var/www/html/server.php on line 140 PHP Warning: socket_getpeername(): unable to retrieve peer name [107]: Transport endpoint is not connected in /var/www/html/server.php on line 35 PHP Warning: socket_getpeername(): unable to retrieve peer name [107]: Transport endpoint is not connected in /var/www/html/server.php on line 66 ^[[A^Z zsh: suspended php -q server.php

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

あ、、、 localhost:9000/etc/php/7.4/apache2/index.php これですね。原因 /index.phpは、普通のWEBリクエストなので、ポート80です。 localhost/etc/php/7.4/apache2/index.php というか、etcの中にDocumentRootおいたんですか^^? つうじょうなhost:9000/etc/php/7.4/apache2/index.php これですね。原因 /index.phpは、普通のWEBリクエストなので、ポート80です。 localhost/etc/php/7.4/apache2/index.php というか、etcの中にDocumentRootおいたんですか^^? デフォルトは、/var/wwwなどだったと思いますが^^ (それ自体は問題はないですが) それで、落ちてきたHTML (むしろJavaScriptが、localhost:9000でWSを開くのであって、初期リクエストは80ですね) HTTP=80 HTTPS=443(今回は使っていないでしょうけど)

voltage999
質問者

お礼

遅くなりました、申し訳ありません。 SSL received a record that exceeded the maximum permissible このようなエラーが出てきてしまい ページを再現することができません。 かなり遅くなりましたが、良ければご教示お願いします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

>真っ白な状態になってしまいます。 まず、そのポートは開いてますか? Firewallなどを確認。 別の方法は、HTTPDにProxyを設定して、 特定のURLをローカルの9000に転送してしまうというやり方もあります。 まず、サーバーがいる状態でリクエストした時と、 立ち上げている時リクエストした時で、ブラウザの挙動が 違いますか?(同じならほぼFirewallが原因、いてもいなくても同じ結果) 後は、ソース内に、あちこちにechoなどを置いて。 サーバー側で、どこをどう通過した?がわかるようにしておくと、 コンソールにダラダラとメッセージがでて、わかりやすいです。 なお、PHP側のソースのURLっぽい所は使われてないので、 そこどうでもいいです。(ソケットなので、URLは要らないので)

voltage999
質問者

お礼

回答ありがとうございます。 何回かやっているうちにlinuxのシステムが壊れたみたいで、 もう一度再インストールせざるを得なくなりました。 あとhttpdのプロキシの転送はよく解らないのですが、 相変わらずnot fountと出ますね。 エラーうろ覚えですが、Permission の Resourceとか書いてあった気がします。 すみません、また明日仕事が終わって手が付けられたら します。

voltage999
質問者

補足

今何とかシステム復帰させたら、 それから検証したら 500 Internal Errorとブラウザ画面に出ていますね。 Config error -couldn't chdir().

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

えっと、Linuxのコンソールでやってみてもらえます? >ホストOS:windows10 >ゲストOS:kalilinux Windowsってホストになるには面倒が多く、 解決が簡単なことを、よりややこしくしていくだけなんですよ。 また、このサンプルの場合は、 HTML上のJSを落としてから、そのJSがWSへの接続を 行っており、単純にWSのみを提供するよりは、 面倒になっています。 (ただし、WSのクライアントを1から書くのはもっと面倒ですが) という感じで、まずは、動く環境を作るのを最優先にして、 XAMPPなどの環境は、いったん後でやるほうがいいと思います。 (おそらくXAMPPでも動きますが、PHPで簡易デーモン化状態を  を作るのが面倒になると思います。BashがないですからXAMPPは)

voltage999
質問者

お礼

回答ありがとうございます。 Linuxコンソールでserver.phpを起動後 localhost:9000/etc/php/7.4/apache2/index.php を開いたのですが真っ白な状態になってしまいます。 原因が解りません。 ご教示お願いします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

いい質問です。 超お勧めの記事があります。 https://susan-style.hatenablog.com/entry/20140306/1394103655 それと「双方向」という考え方は持たなくていいかと。 Socketは基本的に常に双方向です。 あるパケットを相手に送り出したら、相手が受け取ったと 送り返さないと、また送られますから、短方向では 相手からの受信確認が受け取れませんから。 むしろ、リアルタイム的なニュアンスの方が、 いい結果を生むと思いますよ。 今回書いたサンプルのアドレスですが、 こちらで、確実に動作したことを確認している物です。 ただし、バグも同時に理解しましたが。 ただバグと言っても、学習する程度には、 何ら影響はないので、かなり勉強になるものですよ。 このサンプル、 ABNFのあたりRFC5234が、いい加減に作られているのですが、 確かに動作するので、これでどうでしょうか? このサンプルやWebSocket(WSもWSSも動作確認済み、Proxy経由でのWebSocketも動作確認できています。)などご協力できる 事は多いかもしれません。 という事でまず回答ですが、 恐らくすでに入っているとは思いますが。 このサンプルで動作確認を取るのであれば、まずは PHPが入っている事を確認してください。 たったそれだけで、動いちゃいますので。 後は、ブラウザを2個開いて、 同じアドレスを指定して、 1個目に文字を書くと、2個目のウインドウに出る。 2個目に文字を書くと、1個目のウインドウに出る。 これらが同時に行われていれば、テストは成功です。

voltage999
質問者

お礼

なるほど!回答ありがとうございます。 早速やってみようと思います。 見たところ非常に解りやすい感じです。

voltage999
質問者

補足

すみません、phpのサーバーの起動にてこずっています。 XAMPPを使っているのですが、なぜかXAMPPの管理マネージャーみたいなものでやっても設定ができないです。 (サーバーが落ちてる感じで) 因みにnotfoundでしたがそのページ自体は開けた感じです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • vmware同士の通信

    お世話になっております。 当方、ひとつのホスト上でのゲストOS同士の通信を実現させたいのですが うまくいきません。 以下に詳細を記載します。 ■環境  ホストOS:WindowsXP  ゲストOS1:ESXi5.0  ゲストOS2:ESXi5.0 ■アドレス  ホスト:192.168.11.130/24  ゲスト1:192.168.11.150/24(ホスト上の仮想OS)  ゲスト2:192.168.11.151/24(ホスト上の仮想OS) ■ツール  ゲストはVMware Player同士 と VMware workstation同士 両パターンでためしましたが  ゲスト同士で通信はできません(通信試験結果なども全く一緒です) ■ネットワーク接続のタイプ  ブリッジ、NAT、ホストオンリーそれぞれ全部試しましたがゲストOS同士の通信はできません ■通信試験  ホスト⇔ゲスト1 OK  ホスト⇔ゲスト2 OK  ホスト⇔ゲートウェイ OK  ゲスト1⇔ゲートウェイ OK (ホストオンリー以外)  ゲスト2⇔ゲートウェイ OK (ホストオンリー以外)  ゲスト1⇔ゲスト2 NG (ブリッジ、NAT、ホストオンリー全て) 仕様的に単一ホスト内でのゲスト通信はできないものでしょうか? また、出来る場合設定などを教えていただけると大変助かります。 以上、宜しくお願いします。  

  • virtualbox

    ホストOS:windows11 ゲストOS:kalilinux virtualboxの環境設定にネットワークタブの欄がないんですが。 バージョンアップされてなくなってしまったのでしょうか? ご教示お願いします。

  • 仮想ネットワークの通信について教えて下さい.

    VirtualBoxかVMwareで,仮想マシン同士が通信するネットワークを作りたいです. やり方が分かりません.教えて下さい. ホストとゲストは通信をしない. あくまで,ゲスト間で通信をする. [ホスト] OS:Windows 7 ネットワーク:192.168.1.0/24 IPv4:192.168.1.10 [ゲスト1] OS:Windows XP ネットワーク:192.168.2.0/24 IPv4:192.168.2.10 [ゲスト2] OS:CentOS 6.6 ネットワーク:192.168.3.0/24 IPv4:192.168.3.10

  • Hyper-V ホストOSとゲストOSを通信させる

    Hyper-Vを使用して、ホストOS(windows server 2012)、ゲストOS(CentOS6.4)の設定をしております。仮想スイッチ「内部」でホストとゲストを通信させたいのですがうまくいきません。 ホストOSよりpingで確認したところ、ゲストOSへの通信は問題ないようでした。 しかし、ゲストOSよりpingしたところ通信ができてませんでした。 どうしたらゲストからもホストに接続でき、ホストとゲストで通信できますでしょうか? そもそも設定方法が悪いのでしょうか? 最終的にはフォルダの共有ができたらと思ってます。 詳細: ・仮想スイッチは内部で、ネットワークアダブター(手動)とレガシーアダブター(他のコンピュータと接続)、2つ同一名で接続してます。 ・ホストOSにある仮想アダブタは「認識できません」ではなく「ネットワーク2になっており、IPアドレスも表示され通信の送受信もされている。

  • BeEFフレームワーク

    こんにちは、お世話になります。 BeEFを使ってXSSのテストをしたいのですが、ネットワークが繋がらなくて困っています。 ゲストOSからホストOSは繋がるのですが、 ホストOSからゲストOSに通信できないみたいで。 ホストOS上でXSSやられサーバーを起動してBeEFのjsコードの スクリプトをページ上に注入するんですが ゲストOS上でBeEFwebインターフェースが起動しても Webインターフェース上でホストOSがブラウザフックされてないみたいです。 因みに仮想マシンは、virtualboxを使っていて、 ホストOS:windows11 ゲストOS:AntiX Linuxを使っています。 ご教示お願いします。

  • VmWareにてホストOSとゲストOSの通信ができない

    ネットワーク設定の初心者です。 現在、VMWare Server 1.0.1を使用し、 ホストOS:WindowsXP ゲストOS:redhat linux 5 で環境構築しているのですが、ホストOSとゲストOSとの通信ができません。(PINGが通りません。) VMWareのネットワーク設定としてはホストオンリーにしています。 ※ホスト、ゲストの両方のファイアウォールはDisableにしてあります。 また、VMnet1とホストOS,ゲストOSのサブネットは統一してあります。 ホストOSとゲストOS間の通信を行うために他に必要な設定、確認事項がをご教授ください。 言葉足らずなところがあるため、上記の質問でわかりづらいところがあると思いますがその場合はご遠慮なくご質問ください。 よろしくお願い致します。

  • VM Wareで次のようなping通信は可能ですか

    【ゲストOS1】 Windows XP 1(50.229.197.144/24) 【ゲストOS2】 Windows XP 2(42.19.21.39/24) 【ホストOS】 Windows XP(192.168.10.100/24) 行いたいのは、【ゲストOS1】から【ゲストOS2】へのping通信です。 現在、ネットワークの勉強をしており、IPのセグメントが異なるPC間の通信を行うためには、ルータかL3-SWが必要とのことらしいのですが、ルータ等を持っておりません。 どこかの設定にて、この2つのPCが間の通信を行ないたいのですが、可能でしょうか? 可能であれば、設定方法をご教授下さい。

  • Virtualboxで特定サイトが見れなくなる

    下記環境のゲストで、特定サイトが突然接続できなくなります。他のサイトは見れます。 ・・・ここまでは、当該頁が一時的に無くなった可能性が有るのでおかしくはないですが、当該頁のある「ドメイン」(&IPアドレス)にpingを打っても繋がらなくなります。 他方、 ・上記現象発生時、ホスト側ではそのサイトのドメインは見れます(当然ながらpingも繋がる)。 ・ゲストのOSを再起動すると、見れる様になります。 調査・改善方法をご存じの方が居られたら、御教示頂きたく。 不足情報等あれば御指摘下さい。 <環境> Virtualbox: 4.3.10 ゲストのネットワークはNATを指定。 ホストOS: Windows7 Pro ゲストOS: Windows8.1 Pro 使用ブラウザ(ゲスト・ホスト共): IE,Firefox #pingが通ってないので、ブラウザ種類は関係無いと思いますが、まぁ一応。

  • VMWareのゲストOSと通信できない

    VMWare Server 2.0上にWindows 2008 Serverをインストールしました。 下記点は実施し、ホストOSとゲストOSの間は、pingが通るように なりましたが、他の機器からはゲストOSにpingが通りません。 ゲストOSからホストOSを通じて外部のネットワークアクセスは可能です。 外部の機器から、ゲストOSに対して通信できない状態です。 何か他に設定する部分があるのでしょうか? ・ゲストOSのネットワークは、ブリッジに設定。 ・ホストOSのIP設定は、固定IPアドレス、ゲストOSも別の空いている IPアドレスを確保し、設定。 ・ホストOS上ファイアーウォールを無効。(これは元々無効でした) ・ゲストOS上のファイアーウォールを無効。 何か情報があれば、ご教授ください。

  • linuxをインストール後画面が真っ暗

    kalilinuxというのをインストール後画面が真っ暗で起動できません。 visual boxのバージョン5016で試したのですが駄目だったので5012でやったのですが、やはり駄目でした。 kalilinuxの2016.1も2.0も起動しません、2.0の方は、前は起動できたのですが。 どうかご教示お願いします。 ホストOSは、windows8.1です。