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)许可的。