Detailed explanation of PHP Socket programming process_PHP tutorial

WBOY
Release: 2016-07-13 09:45:37
Original
795 people have browsed it

Detailed explanation of PHP Socket programming process

Introduction

Socket is used for inter-process communication. Inter-process communication is usually based on the client-server model. At this point, the client-server are applications that can interact with each other. The interaction between client and server requires a connection. Socket programming is responsible for establishing interactive connections between applications.

In this article, we will learn how to create a simple client-server using PHP. We will also learn how the client application sends messages to the server and how to receive messages from the server.

Use code

Purpose: Develop a client for sending string messages to the server, and the server will reverse the same information and return it to the client.

PHP Server

Step 1: Set variables like "Host" and "Port"

$host = "127.0.0.1";
$port = 5353;
// No Timeout
set_time_limit(0);

The 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 socketn");

Step 3: Bind socket to port and host

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

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

Step 4: Start socket listening

After binding to the IP and port, the server starts waiting for the client to connect. It waits until there is no connection.

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

Step 5: Accept the connection

This function will accept incoming connection requests from the created socket. After accepting a connection from the client socket, this function returns another socket resource, which is actually responsible for communicating with the corresponding client socket. The "$spawn" here is the socket resource responsible for communicating with the client socket.

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

Up to now, we have prepared the server socket, but this script does not actually do anything. So in order to continue to accomplish the above goals, we will read the client socket message, then reverse the received message and send it back to the client socket.

Step 6: Read the message from the client socket

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

Step 7: Reverse the Message

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

Step 8: Send message to client socket

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

Close socket

socket_close($spawn);
socket_close($socket);

This completes the server side. Now, we learn how to create a PHP client.

PHP client

The first two steps are the same as the server side.

Step 1: Set variables like "Host" and "Port"

$host = "127.0.0.1";
$port = 5353;
// No Timeout
set_time_limit(0);

Note: The port and host here should be the same as those defined on the server.

Step 2: Create socket

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

Step 3: Connect to the server

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

At this time, unlike the server, the client socket is not bound to the port and host. Instead, it connects to the server socket and waits to accept connections from the client socket. This step establishes a connection from the client socket to the server socket.

Step 4: Write to the server socket

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

In this step, the data from the client socket is sent to the server socket.

Step 5: Read the response from the server

$result = socket_read ($socket, 1024) or die("Could not read server responsen");
echo "Reply From Server :".$result;

Step 6: Close the socket

socket_close($socket);

Complete code

Server server.php)

// set some variables
$host = "127.0.0.1";
$port = 25003;
// don't timeout!
set_time_limit(0);
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to socketn");
// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket listenern");

// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming connectionn");
// read client input
$input = socket_read($spawn, 1024) or die("Could not read inputn");
// clean up input string
$input = trim($input);
echo "Client Message : ".$input;
// reverse client input and send back
$output = strrev($input) . "n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write outputn");
// close sockets
socket_close($spawn);
socket_close($socket);

客户端client.php)

$host    = "127.0.0.1";
$port    = 25003;
$message = "Hello Server";
echo "Message To server :".$message;
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to servern"); 
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to servern");
// get server response
$result = socket_read ($socket, 1024) or die("Could not read server responsen");
echo "Reply From Server  :".$result;
// close socket
socket_close($socket);

建立上述文件server.php和client.php)后,执行如下操作:

许可证

这篇文章,以及任何相关的源代码和文件,是经过The Code Project Open License (CPOL)许可的。



www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1040141.htmlTechArticlePHP Socket 编程过程详解 介绍 Socket用于进程间通信。进程间通信通常基于客户端服务端模型。此时,客户端服务端是可以彼此交互的应用程序...
Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template