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

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

新規登録して質問してみよう
ただいま回答率
85.50%
ソケット

TCP/IPにおいて、IPアドレスとサブアドレスであるポート番号を組み合わせたネットワークアドレスのことを呼びます。また、ソフトウェアアプリケーションにおいて、TCP/IP通信を行う為の仮想的なインターフェースという意味もある。

PHP

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

Q&A

解決済

1回答

2594閲覧

phpによるパケットキャプチャ

frypan

総合スコア8

ソケット

TCP/IPにおいて、IPアドレスとサブアドレスであるポート番号を組み合わせたネットワークアドレスのことを呼びます。また、ソフトウェアアプリケーションにおいて、TCP/IP通信を行う為の仮想的なインターフェースという意味もある。

PHP

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

0グッド

0クリップ

投稿2016/12/20 04:30

編集2016/12/20 08:17

php

1<!DOCTYPE html> 2<html lang="ja" dir="ltr"> 3 <meta charset="UTF-8" 4 5 <head> 6 <title>test project</title> 7 </head> 8 9 <body> 10 <?php 11 //while (true) { 12 $port = 80; 13 $sock = socket_create_listen($port); 14 15 if($sock==false){ 16 echo socket_strerror(socket_last_error($sock)); 17 exit; 18 } 19 20 if(!socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1)){ 21 echo socket_strerror(socket_last_error($sock)); 22 exit; 23 } 24 25 $clientsock = socket_accept($sock); 26 27 //while (true) { 28 $buf = socket_read($clientsock, 1024); 29 if ($buf == "") { 30 //break; 31 } 32 echo $buf; 33 //} 34 socket_close($clientsock); 35 //} 36 socket_close($sock); 37 ?> 38 </body> 39</html>

パケットキャプチャを作ろうとして上記のコードを書いたのですが文字化けしていてエラー内容を見ることができません。
どうすればsocket_creat_listen()を実行できるのでしょうか?

以下google chromeブラウザに表示されたエラーコード(一部消してあります)

Warning: socket_create_listen(): unable to bind to given address [10048]: 文字化け in C:----\projects\NetBeansProjects\PhpProject1\index.php on line 13

Warning: socket_last_error() expects parameter 1 to be resource, boolean given in C:----\projects\NetBeansProjects\PhpProject1\index.php on line 16
文字化け

Warning: socket_set_option() expects parameter 1 to be resource, boolean given in C:----\projects\NetBeansProjects\PhpProject1\index.php on line 19

Warning: socket_last_error() expects parameter 1 to be resource, boolean given in C:----\projects\NetBeansProjects\PhpProject1\index.php on line 20
文字化け

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

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

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

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

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

guest

回答1

0

ベストアンサー

動作環境にもよりますが、たいてい80ポートは他のサーバーで利用されているため、独自でソケットを受け付ける場合は1024以降のポートを利用するのが一般的です。
ポート80をキャプチャしたい場合は、他にポート80を利用しているプログラムが無いか調べてみてはいかがでしょう。

4つのエラーを上から説明しますと、ポート80が既に使われているのでバインドできないと警告が出ています。
よって15行目の分岐で16行目に到達するわけですが、socket_last_errorの引数にfalseを与えているために警告が出ています。
本来はResouceオブジェクトを渡す関数です。
19行目、20行目も同様のエラーとなります。

投稿2016/12/20 07:28

terushu

総合スコア358

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

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

frypan

2016/12/21 11:52

回答ありがとうございます。 どうやらportは関係なく、環境の問題みたいです。 もし解決したら追記します。
frypan

2016/12/21 22:01

さらにportを数回変えてみたらうまくいきました。 どうやらxamppのnetstatsにはすべての情報が表示されるわけではなかったみたいです・・・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問