Home > Backend Development > PHP Tutorial > How to do Socket programming in PHP?

How to do Socket programming in PHP?

WBOY
Release: 2023-05-21 09:18:02
Original
2560 people have browsed it

With the continuous development of Internet technology, more and more applications need to use Socket for network communication. PHP is a language widely used in Web application development and also supports Socket programming. In this article, I will introduce how to use PHP for Socket programming.

1. Introduction to Socket

Before introducing Socket programming, we need to first understand the concept of Socket. Socket is a network programming interface that provides a standard, network protocol-independent data transmission interface. Through the Socket interface, we can realize data communication between different machines, thereby realizing the development of network applications.

2. PHP Socket Function Library

In PHP, we can use the Socket function library for Socket programming. This function library includes a series of functions, the commonly used ones include:

  1. socket_create(): Create Socket resource
  2. socket_bind(): Bind Socket resource to the specified IP Address and port
  3. socket_listen(): Listen to the specified Socket
  4. socket_accept(): Accept the Socket connection request
  5. socket_connect(): Connect to the specified IP address and port
  6. socket_recv(): Receive Socket data
  7. socket_send(): Send Socket data
  8. socket_close(): Close the Socket connection

3. Socket programming Example

Below, we will introduce a simple Socket programming example to realize data transmission between the client and the server.

Step 1: Create Socket resource

We first need to create a Socket resource, which can be achieved through the socket_create() function. This function has three parameters. The first parameter specifies the type of Socket. SOCK_STREAM is usually used to represent the TCP protocol. The second parameter specifies the protocol type used by the Socket. The default value is usually used. The third parameter specifies the transmission protocol of the Socket. Such as TCP, UDP, etc. The following is the code to create a Socket resource:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$socket){
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "
";
}
Copy after login

Step 2: Bind Socket

We need to bind the Socket resource to the specified IP address and port, which can be done through the socket_bind() function accomplish. This function has two parameters, the first parameter is the Socket resource, and the second parameter is an array containing the IP address and port number. The following is the code to bind the Socket:

$address = "127.0.0.1";
$port = 8000;
$result = socket_bind($socket, $address, $port);
if (!$result){
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}
Copy after login

Step 3: Listen to the Socket

We need to listen to the specified Socket, which can be achieved through the socket_listen() function. This function has one parameter, which is the Socket resource to be monitored. The following is the code for listening to the Socket:

$result = socket_listen($socket);
if (!$result){
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}
Copy after login

Step 4: Accept the Socket connection

We need to wait for the client to connect and receive the client's request. This can be achieved through the socket_accept() function. This function has one parameter, which is the Socket resource to wait for the connection. The following is the code to accept the Socket connection:

$client = socket_accept($socket);
if (!$client){
    echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}
Copy after login

Step 5: Receive and send data

We need to receive the data sent by the client and reply to the client. This can be achieved through the socket_recv() and socket_send() functions. The following is the code for receiving and sending data:

$bytes = socket_recv($client, $buffer, 1024, 0);
if (!$bytes){
    echo "socket_recv() failed: reason: " . socket_strerror(socket_last_error($client)) . "
";
}

$reply = "Hello, " . $buffer . "
";
socket_send($client, $reply, strlen($reply), 0);
Copy after login

Step 6: Close the Socket connection

Finally, we need to close the Socket connection, which can be achieved through the socket_close() function. This function has one parameter, which is the Socket resource to be closed. The following is the code to close the Socket connection:

socket_close($client);
socket_close($socket);
Copy after login

The complete code is as follows:

<?php
$address = "127.0.0.1";
$port = 8000;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!$socket){
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "
";
}

$result = socket_bind($socket, $address, $port);

if (!$result){
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

$result = socket_listen($socket);

if (!$result) {
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

$client = socket_accept($socket);

if (!$client) {
    echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

$bytes = socket_recv($client, $buffer, 1024, 0);
if (!$bytes) {
    echo "socket_recv() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

$reply = "Hello, " . $buffer . "
";
socket_send($client, $reply, strlen($reply), 0);

socket_close($client);
socket_close($socket);
Copy after login

4. Summary

In this article, we introduced the concept of Socket and the PHP Socket function library , and also demonstrates a simple Socket programming example. Socket programming can be used to implement various types of network applications, such as chat rooms, online games, instant messaging, etc. Therefore, mastering Socket programming is very important for PHP developers.

The above is the detailed content of How to do Socket programming in PHP?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
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