recherche
Maisondéveloppement back-endtutoriel phpphpsocket客户端以及服务器例证

phpsocket客户端以及服务器例子

一个菜鸟朋友,突然问了我这个问题...现在稍稍有点时间,就写了一个简单的例子给他,顺便贴上来

服务器端:

<?php /** * @author 邹颢	[email&#160;protected] */class SocketServer{	private $_port=&#39;9000&#39;;	private $_address=&#39;127.0.0.1&#39;;	private $_client_socket_list=array();	public function __set($name,$val){		$this->$name=$val;	}	private function _showError($error){		exit($error);	}	/**	 * 开始进行socket服务器端监听端口	 */	public function start(){		// 创建端口		if (($sock = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP )) === false) {			$this->_showError("socket_create() failed :reason:" . socket_strerror ( socket_last_error () ));		}		// 绑定		if (socket_bind ( $sock, $this->_address, $this->_port ) === false) {			$this->_showError("socket_bind() failed :reason:" . socket_strerror ( socket_last_error ( $sock ) ));		}		// 监听		if (socket_listen ( $sock, 5 ) === false) {			$this->_showError("socket_bind() failed :reason:" . socket_strerror ( socket_last_error ( $sock ) ) );		}		do {			//当有一个客户端连接的时候			if ($client_socket=socket_accept ( $sock )) {				$count = count ( $this->_client_socket_list ) + 1;				//把新来的用户加入 客户端数组里				$this->_client_socket_list[]=$client_socket;				echo "new connection:\r\n";//服务器端输出当前正在连接的客户端数量				echo "current connection:{$count}\r\n";				//接受客户端传过来的字符串				$msg=$this->read($client_socket);				echo "client:{$msg}\r\n";				//服务器向客户端传值				$my_msg="I am fine,think you\r\n";				$this->send($client_socket,$my_msg);			}			/**			 * 这段代码给你参考,用来判断是否有客户端主动失去连接			else{				foreach ( $this->_client_socket_list as $socket ) {					$len = socket_recv ($socket, $buffer, 2048, 0 ); // 接受一下客户端信息,如果为0代表断开连接					if ($len start();//开始监听

客户端:

<?php /** * @author 邹颢	[email&#160;protected] */class SocketServer{	private $_port=&#39;9000&#39;;	private $_address=&#39;127.0.0.1&#39;;	private $_client_socket_list=array();	public function __set($name,$val){		$this->$name=$val;	}	private function _showError($error){		exit($error);	}	/**	 * 开始进行socket服务器端监听端口	 */	public function start(){		// 创建端口		if (($sock = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP )) === false) {			$this->_showError("socket_create() failed :reason:" . socket_strerror ( socket_last_error () ));		}		// 绑定		if (socket_bind ( $sock, $this->_address, $this->_port ) === false) {			$this->_showError("socket_bind() failed :reason:" . socket_strerror ( socket_last_error ( $sock ) ));		}		// 监听		if (socket_listen ( $sock, 5 ) === false) {			$this->_showError("socket_bind() failed :reason:" . socket_strerror ( socket_last_error ( $sock ) ) );		}		do {			//当有一个客户端连接的时候			if ($client_socket=socket_accept ( $sock )) {				$count = count ( $this->_client_socket_list ) + 1;				//把新来的用户加入 客户端数组里				$this->_client_socket_list[]=$client_socket;				echo "new connection:\r\n";//服务器端输出当前正在连接的客户端数量				echo "current connection:{$count}\r\n";				//接受客户端传过来的字符串				$msg=$this->read($client_socket);				echo "client:{$msg}\r\n";				//服务器向客户端传值				$my_msg="I am fine,think you\r\n";				$this->send($client_socket,$my_msg);			}			/**			 * 这段代码给你参考,用来判断是否有客户端主动失去连接			else{				foreach ( $this->_client_socket_list as $socket ) {					$len = socket_recv ($socket, $buffer, 2048, 0 ); // 接受一下客户端信息,如果为0代表断开连接					if ($len start();//开始监听

注意事项:服务器端请用CLI模式运行,cgi模式会超时,新手常喜欢犯的错误.什么是CLI模式,简单的说就是用命令行去执行,而不要用游览器打开,否则会超时的
Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Comment PHP identifie-t-il la session d'un utilisateur?Comment PHP identifie-t-il la session d'un utilisateur?May 01, 2025 am 12:23 AM

Phpidentifiesauser'sessionusingssse cookiesand sessionids.1) whenSession_start () est calculé, phpgeneratesauquesseSessionIdStoredInacookIenameDPhpSesssIdonUser'sbrowser.2) thisIdallowsphptoreTrrieSeSessionDatafromTeserver.

Quelles sont les meilleures pratiques pour sécuriser les séances PHP?Quelles sont les meilleures pratiques pour sécuriser les séances PHP?May 01, 2025 am 12:22 AM

La sécurité des sessions PHP peut être obtenue grâce aux mesures suivantes: 1. Utilisez Session_RegeReate_ID () pour régénérer l'ID de session lorsque l'utilisateur se connecte ou est une opération importante. 2. Cryptez l'ID de session de transmission via le protocole HTTPS. 3. Utilisez session_save_path () pour spécifier le répertoire sécurisé pour stocker les données de session et définir correctement les autorisations.

Où les fichiers de session PHP sont-ils stockés par défaut?Où les fichiers de session PHP sont-ils stockés par défaut?May 01, 2025 am 12:15 AM

PhpSessionFilesArestorentheDirectorySpecifiedSession.save_path, généralement / tmponunix-likesystemsorc: \ windows \ temponwindows.tocustomzethis: 1) usession_save_path () tosetacustomDirectory, astumeit'swrit

Comment récupérer les données d'une session PHP?Comment récupérer les données d'une session PHP?May 01, 2025 am 12:11 AM

ToretrrievedatafromaphpSession, startTheSessionwithSession_start () et accessvariablesInthe $ _sessionArray.forexample: 1) startTheSession: session_start (). 2) récupéré: $ username = $ _ session ['userSeger']; echo "bienvenue,". $ Username;..

Comment pouvez-vous utiliser des sessions pour mettre en œuvre un panier?Comment pouvez-vous utiliser des sessions pour mettre en œuvre un panier?May 01, 2025 am 12:10 AM

Les étapes pour construire un système de panier d'achat efficace à l'aide de sessions comprennent: 1) Comprendre la définition et la fonction de la session. La session est un mécanisme de stockage côté serveur utilisé pour maintenir l'état de l'utilisateur entre les demandes; 2) Implémenter la gestion de session de base, comme l'ajout de produits au panier; 3) développer une utilisation avancée, soutenant la gestion de la quantité de produits et la suppression; 4) Optimiser les performances et la sécurité, en persistant les données de session et en utilisant des identifiants de session sécurisés.

Comment créez-vous et utilisez-vous une interface dans PHP?Comment créez-vous et utilisez-vous une interface dans PHP?Apr 30, 2025 pm 03:40 PM

L'article explique comment créer, mettre en œuvre et utiliser des interfaces dans PHP, en se concentrant sur leurs avantages pour l'organisation du code et la maintenabilité.

Quelle est la différence entre crypte () et mot de passe_hash ()?Quelle est la différence entre crypte () et mot de passe_hash ()?Apr 30, 2025 pm 03:39 PM

L'article traite des différences entre crypt () et mot de passe_hash () dans PHP pour le hachage de mot de passe, en se concentrant sur leur implémentation, leur sécurité et leur aptitude aux applications Web modernes.

Comment pouvez-vous prévenir les scripts inter-sites (XSS) en PHP?Comment pouvez-vous prévenir les scripts inter-sites (XSS) en PHP?Apr 30, 2025 pm 03:38 PM

L'article discute de la prévention des scripts inter-sites (XSS) dans PHP par validation d'entrée, en codage de sortie et en utilisant des outils comme OWASP ESAPI et Purificateur HTML.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel