• [PHP-Socket] Socket Programming in PHP


    Simple Client-Server socket program in PHP

    Introduction

    Sockets are used for interprocess communication. Interprocess communication is generally based on client-server model. In this case, client-server are the applications that interact with each other.

    Interaction between client and server requires a connection. Socket programming is responsible for establishing that connection between applications to interact.

    By the end of this tip, we will learn how to create a simple client-server in PHP. We will also learn how client application sends message to server and receives it from the same.

    Using the Code

    Aim: Develop a client to send a string message to server and server to return reverse of the same message to client.

    PHP SERVER:

    Step 1: Set variables such as "host" and "port"

    $host = "127.0.0.1";

    $port = 5353

    // No timeout

    set_time_limit(0);

    Port number can be any positive integer between 1024 - 65535

    Step 2: Create Socket

    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket ");

    Step 3: Bind the socket to port and host

    Here the created socket resource is bound to IP address and port number.

    $result = socket_bind($socket, $host, $port) or die("Could not bind to socket ");

    Step 4: Start listening to the socket

    $result = socket_listen($socket, 3) or die("Could not sest up socket listener ");

    Step 5: Accept incoming connection

    This function accepts incoming connection request on the created socket. After accepting the connection from client socket, this function returns another socket resource that is actually responsible

    for communication with the corresponding client socket. Here "$spawn" is that socket resource which is responsible for communication with client socket.

    $spawn = socket_accept($socket) or die("Could not accept incoming connection ");

    So far, we have prepared our server socket but the script doesn't actually do anything. Keeping to our aforesaid aim, we will read message from client socket and then send back reverse message to

    the client socket again.

    Step 6: Read the message from the Client socket

    $input = socket_read($spawn, 1024) or die("Could not read input ");

    Step 7: Reverse the message

    $output = strrev($input) . " ";

    Step 8: Send message to the client socket

    socket_write($spawn, $output, strlen($output)) or die("Could not write output ");

    Close the socket

    socket_close($spawn);

    socket_close($socket);

    This completes with the server. Now we will learn to create PHP client.

    PHP CLIENT

    The first two steps are the same in ther server.

    Step 1: Set variables such as "host" and "port"

    $host = "127.0.0.1";

    $port = 5353;

    // No Timeout

    set_time_limit(0);

    Note: Here the port and host should same as defined in server.

    Step2 : Create Socket

    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket ");

    Step 3: Connect to the server

    $result = socket_connect($socket, $host, $port) or die("Could not connect to server");

    Here unlike server, client socket is not bound with port and host. Instead it connects to server socket, waiting to accept the connection from client socket. Connection of client to server socket is established in this step.

    Step 4: Write to server socket

    socket_write($socket, $message, strlen($message)) or die("Could not send data to server ");

    Step 5: Read the response from the server

    $result = socket_read($socket, 1024) or die("Could not read server response ");

    echo "Reply From Server:" . $result;

    Step 6: Close the socket

    socket_close($socket);

  • 相关阅读:
    .NET 中验证控件的使用
    Input(file) 控件的简单使用!
    dropdownlist 、listbox 与 panel的使用
    Applicatin、 server、 session 、cookies对象的简单使用方法
    三天晚上看了24集 央视版《神雕侠侣》 还不错
    推荐一本 asp.net(c#)学习的好书
    .net 中广告控件 AdRotator 的使用(xml)
    Asp.net 1.0 升级至 ASP.NET 2.0十个问题总结
    多线程操作 同一个textbox. yi
    博客开张第一贴!谢谢!大伙多多关照!谢谢. yi
  • 原文地址:https://www.cnblogs.com/shuman/p/5581692.html
Copyright © 2020-2023  润新知