2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPでソケット通信をやってみた

Posted at

やってみた理由

WebSocketを仕事で使うらしく、
そもそもSocket通信触ったことがなかったのでPHPでやってみました。

実行環境

ターミナル1:socketSample.phpを起動して127.0.0.1:8080をlistenしておく。
ターミナル2:telnetでターミナル1に接続。

全体の流れ

今回作成したサンプルの全体の流れです。
sample.png

サンプルコード

簡素化のためにエラー処理は省いています。

socketSample.php
<?php

$address = '127.0.0.1';
$port = 8000;

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //※1
socket_bind($sock, $address, $port); //※2
socket_listen($sock, 5); // ※3

$msgsock = socket_accept($sock); // ※5

do {
    $buf = socket_read($msgsock, 2048, PHP_NORMAL_READ); // ※6
    if (!$buf = trim($buf)) {
        continue;
    }
    $talkback = "PHP: You said '$buf'.\n";
    socket_write($msgsock, $talkback, strlen($talkback)); // ※7
    break;

} while (true);
socket_close($msgsock); // ※8

socket_close($sock); // ※9
?>

おわりに

普段はアプリケーション層のHTTPしか触らないので、ソケット通信を学んだのは良い勉強になったと思います。

参考資料

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?