PHP Socket Server端例子
一个简单的Socket通信Demo

⼀个简单的Socket通信Demo服务器端Demo:Server.java(服务器端运⾏主程序,直接运⾏):package cn.wjs;import .InetAddress;import .ServerSocket;import .Socket;public class Server {private static final int port = 9999;private static final int backlog = 100;private static final String bindAddr = "127.0.0.1";public static void main(String[] args) throws Exception {System.out.println("正在启动Socket服务器");ServerSocket server = new ServerSocket(9998, 100, InetAddress.getByName("127.0.0.1"));System.out.println("启动完成\n正在监听客户端连接");while (true) {Socket socket = server.accept();System.out.println("产⽣了⼀个新的会话,来⾃:" + socket.getInetAddress() + "\n=================================="); new ServerMessageReceiver(socket).start();new ServerMessageSender(socket).start();System.out.println("服务器端已启动");}}}ServerMessageReceiver.java:package cn.wjs;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import .Socket;public class ServerMessageReceiver extends Thread{private Socket socket;public ServerMessageReceiver(Socket socket){this.socket = socket;}public void run() {try {BufferedReader reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream(), "UTF-8"));String content = null;while (true) {if (this.socket.isClosed()) {System.out.println("Socket已经关闭");reader.close();this.socket.close();break;}content = reader.readLine();if (content.equals("bye")) {System.out.println("对⽅请求关闭连接,⽆法继续进⾏聊天");reader.close();this.socket.close();break;}System.out.println("【对⽅】" + content + "\n");}reader.close();this.socket.close();}catch (UnsupportedEncodingException e){e.printStackTrace();}catch (IOException e) {e.printStackTrace();}}}ServerMessageSender.java:package cn.wjs;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import .Socket;public class ServerMessageSender extends Thread{private Socket socket;public ServerMessageSender(Socket socket){this.socket = socket;}public void run() {try {BufferedWriter outwriter = new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream(), "UTF-8")); BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));String msg = null;while (true) {msg = inputReader.readLine();if (msg.toLowerCase().equals("exit")) {System.exit(0);}if (this.socket.isClosed()) {System.out.println("Socket已经关闭");outwriter.close();inputReader.close();this.socket.close();break;}outwriter.write(msg);outwriter.newLine();outwriter.flush();}}catch (UnsupportedEncodingException e){e.printStackTrace();}catch (IOException e) {e.printStackTrace();}}}ClientDemo:Client.java(客户端主程序,直接运⾏):package cn.wjs;import java.io.IOException;import .InetAddress;import .Socket;import .UnknownHostException;public class Client{private static final int port = 9999;private static final String bindAddr = "127.0.0.1";public static void main(String[] args){System.out.println("正在连接Socket服务器");try {Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 9998);System.out.println("已连接\n================");new ClientMessageSender(socket).start();new ClientMessageReceiver(socket).start();System.out.println("已启动");}catch (UnknownHostException e) {e.printStackTrace();}catch (IOException e) {e.printStackTrace();}}}ClientMessageReceiver.java:package cn.wjs;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import .Socket;public class ClientMessageReceiver extends Thread{private Socket socket;public ClientMessageReceiver(Socket socket){this.socket = socket;}public void run(){try {BufferedReader reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream(), "UTF-8")); String content = null;while (true) {if (this.socket.isClosed()) {System.out.println("Socket已经关闭");reader.close();this.socket.close();break;}content = reader.readLine();if (content.equals("bye")) {System.out.println("对⽅请求关闭连接,⽆法继续进⾏聊天");reader.close();this.socket.close();break;}System.out.println("【对⽅】" + content + "\n");}}catch (UnsupportedEncodingException e){e.printStackTrace();}catch (IOException e) {e.printStackTrace();}}}ClientMessageSender.java:package cn.wjs;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import .Socket;public class ClientMessageSender extends Thread{private Socket socket;public ClientMessageSender(Socket socket){this.socket = socket;}public void run(){try {BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream(), "UTF-8"));BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String msg = null;while (true) {msg = reader.readLine();if (msg.toLowerCase().equals("exit")) {System.exit(0);}if (this.socket.isClosed()) {System.out.println("Socket已经关闭");writer.close();this.socket.close();break;}writer.write(msg);writer.newLine();writer.flush();}}catch (UnsupportedEncodingException e){e.printStackTrace();}catch (IOException e) {e.printStackTrace();}}}通过elicpse导出jar包直接运⾏,服务器端导出jar设置main.class为Server.java,客户端导出jar设置main.class为Client.java------这是传统的TCP/BIO模式.如果多个客户端向服务器发送请求,通常采⽤连接池的⽅式来维护,这和数据库的连接池⼀个道理。
linux socket编程案例

linux socket编程案例如何使用Linux Socket编程案例实现网络通信?一、介绍Socket编程是Linux操作系统中用于实现网络通信的一种编程接口。
通过Socket编程,我们可以在不同的主机之间建立网络连接,并进行数据传输。
本文将通过一个案例,一步一步介绍如何使用Linux Socket编程实现一个简单的网络通信应用。
二、准备工作在开始编写Socket程序之前,我们需要确保已经安装了Linux操作系统,并且具备一定的编程基础。
以下是本文案例所使用的环境和工具:- 操作系统:Ubuntu 20.04 LTS- 编程语言:C++- 编译器:g++三、案例背景我们打算实现一个简单的客户端-服务器模型。
客户端将向服务器发送一段文本,并在服务器端进行反转后返回给客户端。
四、服务器端代码实现1. 首先,我们创建一个服务器端的Socket,用于接收客户端连接:cpp#include <iostream>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>int main() {创建Socketint serverSocket = socket(AF_INET, SOCK_STREAM, 0);if (serverSocket == -1) {std::cerr << "Failed to create socket." << std::endl;return -1;}设置监听地址struct sockaddr_in serverAddress;serverAddress.sin_family = AF_INET;serverAddress.sin_port = htons(8888);serverAddress.sin_addr.s_addr = INADDR_ANY;绑定Socket和地址if (bind(serverSocket, (struct sockaddr*)&serverAddress,sizeof(serverAddress)) == -1) {std::cerr << "Failed to bind socket." << std::endl;return -1;}开始监听if (listen(serverSocket, 5) == -1) {std::cerr << "Failed to listen on socket." << std::endl;return -1;}std::cout << "Server started, listening on port 8888." << std::endl;接受客户端连接struct sockaddr_in clientAddress;socklen_t clientAddressLength = sizeof(clientAddress);int clientSocket = accept(serverSocket, (structsockaddr*)&clientAddress, &clientAddressLength);处理客户端请求...关闭Socketclose(serverSocket);return 0;}以上代码中,我们先创建一个Socket对象,然后设置服务器的监听地址,接着绑定Socket和地址,最后开始监听客户端连接。
socket 编程入门教程

socket 编程入门教程(一)TCP server 端:1、建模作者:龙飞绝大部分关于socket编程的教程总是从socket的概念开始讲起的。
要知道,socket的初衷是个庞大的体系,TCP/IP只是这个庞大体系下一个很小的子集,而我们真正能用上的更是这个子集中的一小部分:运输层(Host-to-Host Transport Layer)的TCP和UDP协议,以及使用这两个协议进行应用层(Application Layer)的开发。
即使是socket的核心部分,网络层(Internet Layer)的IP协议,在编程的时候我们也很少会感觉到它的存在——因为已经被封装好了,我们唯一需要做的事情就是传入一个宏。
第一节我想介绍的概念就这么多,当然,既然我们已经说了3个层了,我想最好还是把最后一个层也说出来,即所谓链路层(Network Access Layer),它包括了物理硬件和驱动程序。
这四个层从底到高的顺序是:链路层--网络层--运输层--应用层。
好,说实话我们现在并不清楚所谓TCP到底是什么东东,不过我们知道这东东名气很大。
或许你早就知道,另外一个声名狼藉建立在TCP协议基础上的应用程序,它曾经几乎是统治了一个时代,即使是今天,我们依然无法消除他的影响力的——恩,是的,就是telnet。
在这个教程中,我使用的环境是Debian GNU/Linux 4.0 etch。
传说中的stable -_-!!!,恩,我是很保守的人。
如果你不是自己DIY出来的系统,相信默认安装里面就应该有telnet (/usr/bin/telnet,要是没装就自己aptitude install吧)。
telnet可以与所有遵循TCP协议的服务器端进行通讯。
通常,socket编程总是Client/Server形式的,因为有了telnet,我们可以先不考虑client的程序,我们先写一个支持TCP协议的server端,然后用telnet作为client 验证我们的程序就好了。
实用的PHP实例代码20个2篇

实用的PHP实例代码20个2篇PHP是一种广泛应用于Web开发的脚本语言,具有简单、灵活、易学的特点。
它不仅可以用来开发网站,还可以用来编写各种实用的应用程序。
在本文中,我们将为您介绍20个实用的PHP实例代码和使用场景。
第一篇:1-10个实例1. 文件上传文件上传是Web开发中常用的功能之一。
使用PHP,您可以很容易地实现文件上传功能,从而让用户能够向您的网站或应用程序上传文件。
2. 邮件发送PHP提供了发送电子邮件的功能,您可以使用PHP编写代码来发送电子邮件,例如发送注册确认邮件、找回密码邮件等。
3. 图片缩放PHP提供了强大的图像处理功能,您可以使用PHP来缩放图片,为您的网站或应用程序提供更好的用户体验。
4. 数据库连接在许多Web应用程序中,需要与数据库进行交互。
PHP提供了各种数据库连接操作,您可以使用PHP来连接各种类型的数据库,如MySQL、Oracle等。
5. 表单验证表单验证是保证用户输入数据有效和安全的重要环节。
PHP提供了丰富的表单验证函数,您可以使用PHP来验证用户提交的表单数据,例如检查邮箱格式、密码强度等。
6. 分页功能在处理大量数据时,分页功能非常有用。
使用PHP,您可以轻松地实现分页功能,让用户能够浏览和导航数据的不同页面。
7. 登录认证登录认证是保护网站或应用程序安全的重要步骤。
使用PHP,您可以编写代码来实现用户登录认证功能,例如检查用户名和密码是否匹配等。
8. 数据加密在处理敏感信息时,数据加密是非常重要的。
PHP提供了各种数据加密函数,您可以使用PHP来对敏感数据进行加密和解密。
9. 生成验证码验证码是防止机器人和恶意攻击的有效手段。
使用PHP,您可以生成随机验证码,并将其嵌入到表单中,确保只有人类用户能够提交表单。
10. 数据备份定期数据备份是保证数据安全的重要环节。
使用PHP,您可以编写脚本来自动备份数据库,确保数据的安全可靠。
第二篇:11-20个实例11. 数据导出有时候,需要将数据库中的数据导出为Excel、CSV等格式,以方便进行数据分析或其他用途。
基于C++的socket通信实例

刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket 程序例子,开发环境是vc6:首先是TCPserver端:[cpp]view plaincopy1.#include "stdafx.h"2.#include <stdio.h>3.#include <winsock2.h>4.5.#pragma comment(lib,"ws2_32.lib")6.7.int main(int argc, char* argv[])8.{9.//初始化WSA10.WORD sockVersion = MAKEWORD(2,2);11. WSADATA wsaData;12.if(WSAStartup(sockVersion, &wsaData)!=0)13. {14.return 0;15. }16.17.//创建套接字18. SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);19.if(slisten == INVALID_SOCKET)20. {21. printf("socket error !");22.return 0;23. }24.25.//绑定IP和端口26. sockaddr_in sin;27. sin.sin_family = AF_INET;28. sin.sin_port = htons(8888);29. sin.sin_addr.S_un.S_addr = INADDR_ANY;30.if(bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)31. {32. printf("bind error !");33. }34.35.//开始监听36.if(listen(slisten, 5) == SOCKET_ERROR)37. {38. printf("listen error !");39.return 0;40. }41.42.//循环接收数据43. SOCKET sClient;44. sockaddr_in remoteAddr;45.int nAddrlen = sizeof(remoteAddr);46.char revData[255];47.while (true)48. {49. printf("等待连接...\n");50. sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);51.if(sClient == INVALID_SOCKET)52. {53. printf("accept error !");54.continue;55. }56. printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));57.58.//接收数据59.int ret = recv(sClient, revData, 255, 0);60.if(ret > 0)61. {62. revData[ret] = 0x00;63. printf(revData);64. }65.66.//发送数据67.char * sendData = "你好,TCP客户端!\n";68. send(sClient, sendData, strlen(sendData), 0);69. closesocket(sClient);70. }71.72. closesocket(slisten);73. WSACleanup();74.return 0;75.}client端:[cpp]view plaincopy1.#include "stdafx.h"2.#include <WINSOCK2.H>3.#include <STDIO.H>4.5.#pragma comment(lib,"ws2_32.lib")6.7.8.int main(int argc, char* argv[])9.{10.WORD sockVersion = MAKEWORD(2,2);11. WSADATA data;12.if(WSAStartup(sockVersion, &data) != 0)13. {14.return 0;15. }16.17. SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);18.if(sclient == INVALID_SOCKET)19. {20. printf("invalid socket !");21.return 0;22. }23.24. sockaddr_in serAddr;25. serAddr.sin_family = AF_INET;26. serAddr.sin_port = htons(8888);27. serAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");28.if (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)29. {30. printf("connect error !");31. closesocket(sclient);32.return 0;33. }34.char * sendData = "你好,TCP服务端,我是客户端!\n";35. send(sclient, sendData, strlen(sendData), 0);36.37.char recData[255];38.int ret = recv(sclient, recData, 255, 0);39.if(ret > 0)40. {41. recData[ret] = 0x00;42. printf(recData);43. }44. closesocket(sclient);45. WSACleanup();46.return 0;47.}然后是UDPserver端:[cpp]view plaincopy1.#include "stdafx.h"2.#include <stdio.h>3.#include <winsock2.h>4.5.#pragma comment(lib, "ws2_32.lib")6.7.int main(int argc, char* argv[])8.{9. WSADATA wsaData;10.WORD sockVersion = MAKEWORD(2,2);11.if(WSAStartup(sockVersion, &wsaData) != 0)12. {13.return 0;14. }15.16. SOCKET serSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);17.if(serSocket == INVALID_SOCKET)18. {19. printf("socket error !");20.return 0;21. }22.23. sockaddr_in serAddr;24. serAddr.sin_family = AF_INET;25. serAddr.sin_port = htons(8888);26. serAddr.sin_addr.S_un.S_addr = INADDR_ANY;27.if(bind(serSocket, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)28. {29. printf("bind error !");30. closesocket(serSocket);31.return 0;32. }33.34. sockaddr_in remoteAddr;35.int nAddrLen = sizeof(remoteAddr);36.while (true)37. {38.char recvData[255];39.int ret = recvfrom(serSocket, recvData, 255, 0, (sockaddr *)&remoteAddr, &nAddrLen);40.if (ret > 0)41. {42. recvData[ret] = 0x00;43. printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));44. printf(recvData);45. }46.47.char * sendData = "一个来自服务端的UDP数据包\n";48. sendto(serSocket, sendData, strlen(sendData), 0, (sockaddr *)&remoteAddr, nAddrLen);49.50. }51. closesocket(serSocket);52. WSACleanup();53.return 0;54.}client端:[cpp]view plaincopy1.#include "stdafx.h"2.#include <stdio.h>3.#include <winsock2.h>4.5.#pragma comment(lib, "ws2_32.lib")6.7.int main(int argc, char* argv[])8.{9.WORD socketVersion = MAKEWORD(2,2);10. WSADATA wsaData;11.if(WSAStartup(socketVersion, &wsaData) != 0)12. {13.return 0;14. }15. SOCKET sclient = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);16.17. sockaddr_in sin;18. sin.sin_family = AF_INET;19. sin.sin_port = htons(8888);20. sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");21.int len = sizeof(sin);22.23.char * sendData = "来自客户端的数据包.\n";24. sendto(sclient, sendData, strlen(sendData), 0, (sockaddr *)&sin, len);25.26.char recvData[255];27.int ret = recvfrom(sclient, recvData, 255, 0, (sockaddr *)&sin, &len);28.if(ret > 0)29. {30. recvData[ret] = 0x00;31. printf(recvData);32. }33.34. closesocket(sclient);35. WSACleanup();36.return 0;37.}。
117个php实例

117个php实例以下是一些常见的 PHP 实例,共计 117 个: 1. Hello World 程序。
php.<?php.echo "Hello World!";>。
2. 变量的使用。
php.<?php.$name = "John";$age = 25;echo "My name is " . $name . " and I am " . $age . " years old.";>。
3. 数组的使用。
php.<?php.$fruits = array("apple", "banana", "orange");echo "I like " . $fruits[0] . ", " . $fruits[1] . " and " . $fruits[2] . ".";>。
4. 循环的使用。
php.<?php.for ($i = 1; $i <= 10; $i++) {。
echo $i . " ";}。
>。
5. 条件语句的使用。
php.<?php.$age = 18;if ($age >= 18) {。
echo "You are an adult.";} else {。
echo "You are a minor.";}。
>。
6. 函数的使用。
php.<?php.function sayHello($name) {。
echo "Hello, " . $name . "!"; }。
sayHello("Alice");>。
streamsocket用法

`stream_socket` 是 PHP 中用于操作网络套接字的一系列函数。
这些函数提供了一种相对低级别的网络编程接口,允许开发者创建和操作网络连接,包括TCP、UDP 连接等。
使用 `stream_socket` 系列函数,可以实现服务器和客户端之间的数据通信。
### 基本用法#### 创建服务器 (TCP)```php// 创建一个服务器端套接字$server = stream_socket_server(");if ($server === false) {throw new UnexpectedValueException("Could not bind to socket: $errorMessage");}while ($client = @stream_socket_accept($server)) {fwrite($client, 'Hello World!' . PHP_EOL);fclose($client);}fclose($server);```这段代码创建了一个监听在本机 8000 端口的 TCP 服务器。
当客户端连接时,它发送"Hello World!" 给客户端,然后关闭连接。
#### 创建客户端 (TCP)```php// 连接到服务器$client = stream_socket_client(");if ($client === false) {throw new UnexpectedValueException("Failed to connect: $errorMessage");}echo stream_get_contents($client);fclose($client);```这段代码尝试连接到本机的 8000 端口上的服务器,并读取从服务器接收到的数据。
PHPSocket实现websocket(四)Select函数

PHPSocket实现websocket(四)Select函数int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);/*参数列表int maxfdp是⼀个整数值,是指集合中所有⽂件描述符的范围,即所有⽂件描述符的最⼤值加1,不能错!在Windows中这个参数的值⽆所谓,可以设置不正确。
fd_set *readfds是指向fd_set结构的指针,这个集合中应该包括⽂件描述符,我们是要监视这些⽂件描述符的读变化的,即我们关⼼是否可以从这些⽂件中读取数据了,如果这个集合中有⼀个⽂件可读,select就会返回⼀个⼤于0的值,表⽰有⽂件可读,如果没有可读的⽂件,则根据timeout参数再判断是否超时,若超出timeout的时间,select返回0,若发⽣错误返回负值。
可以传⼊NULL值,表⽰不关⼼任何⽂件的读变化。
fd_set *writefds是指向fd_set结构的指针,这个集合中应该包括⽂件描述符,我们是要监视这些⽂件描述符的写变化的,即我们关⼼是否可以向这些⽂件中写⼊数据了,如果这个集合中有⼀个⽂件可写,select就会返回⼀个⼤于0的值,表⽰有⽂件可写,如果没有可写的⽂件,则根据timeout参数再判断是否超时,若超出timeout的时间,select返回0,若发⽣错误返回负值。
可以传⼊NULL值,表⽰不关⼼任何⽂件的写变化。
fd_set *errorfds同上⾯两个参数的意图,⽤来监视⽂件错误异常。
struct timeval* timeout是select的超时时间,这个参数⾄关重要,它可以使select处于三种状态:第⼀,若将NULL以形参传⼊,即不传⼊时间结构,就是将select置于阻塞状态,⼀定等到监视⽂件描述符集合中某个⽂件描述符发⽣变化为⽌;第⼆,若将时间值设为0秒0毫秒,就变成⼀个纯粹的⾮阻塞函数,不管⽂件描述符是否有变化,都⽴刻返回继续执⾏,⽂件⽆变化返回0,有变化返回⼀个正值;第三,timeout的值⼤于0,这就是等待的超时时间,即 select在timeout时间内阻塞,超时时间之内有事件到来就返回了,否则在超时后不管怎样⼀定返回,返回值同上述。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 */本文章提供在php教程中socket相关函数的实例,如果创建socket 接受一个socket连接写入一个socket 初始化连接等操作。
*/ 2$ip="127.0.0.1"; //定义ip地址
3$port=1000; //定义端口
4$socket=socket_create(af_inet,sock_stream,sol_tcp); //创建socket
5$bind=socket_bind($socket,$ip,$prot); //绑定一个socket
6$listen=socket_listen($socket); //监听socket
7$msg=socket_accept($socket); //接受一个socket连接
8$welcome="欢迎来到php服务/n"; //定义字符串
9 socket_write($msg,$welcome,strlen($welcome)); //写入一个socket
10 socket_close($socket); //关闭socket
11
12
13
14$ip="127.0.0.1"; //定义ip地址
15$port=1000; //定义端口
16$socket=socket_create(af_inet,sock_stream,sol_tcp); //创建socket
17 socket_clear_error($socket); //清空socket错误信息
18 socket_close($socket); //关闭socket
19
20
21
22$sockets=array(); //定义一个数组
23
24if(!socket_create_pair(af_unix,sock_stream,0,$sockets)) //如果socket没有成功创建
25 {
26echo socket_strerror(socket_last_error()); //输出错误信息
27 }
28
29if(!socket_write($sockets[0],"abcdef123n",strlen("abcdef123n"))) //如果执行socket写失败
30 {
31 cho socket_strerror(socket_last_error()); //输出错误信息
32 }
33if(!$data=socket_read($sockets[1],strlen("abcdef123n"),php_binary_read)) //如果读取信息失败
34 {
35echo socket_strerror(socket_last_error()); //输出错误信息
36 }
37var_dump($data); //输出socket数据信息
38
39 socket_close($sockets[0]); //关闭socket1
40 socket_close($sockets[1]); //关闭socket2
41
42
43
44$ip="127.0.0.1"; //定义ip地址
45$port=1000; //定义端口
46$socket=socket_create(af_inet,sock_stream,sol_tcp); //创建socket
47 socket_set_nonblock($socket); //设置不锁定状态
48 socket_connect($socket,$ip,$port); //初始化连接
49 socket_set_block($sock); //锁定socket
50switch(socket_select($r=array($socket),$w=array($socket),$f=array($socket),5)) 51 {
52case 2:
53echo "连接被拒绝!n";
54break;
55case 1:
56echo "成功连接n";
57break;
58case 0:
59echo "连接超时n";
60break;
61 }
62
63
64
65
66class socketlistener extends socket
67 {
68function __construct($port=null) //定义__construct方法
69 {
70$this->stream=@socket_create_listen($port?$port:port); //打开端口接受连接
71 }
72function isactive() //定义isactive方法
73 {
74if($this->stream) //如果有连接
75 {
76return true; //返回真值
77 }
78else//无连接
79 {
80return false; //返回假值
81 }
82 }。