关闭

socket(php)(不确定是否是长连接)(一次连接,多次接受,发送特定字符时关闭连接)整理版本3

标签: phpsocket通讯
179人阅读 评论(0) 收藏 举报
分类:
<?php  
	set_time_limit(0);  
	$ip = '192.168.1.52';  
	$port = 8079;  
	  
	/*----------------    以下操作都是手册上的    -------------------*/  
	if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {  
	    echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";  
	}   
	if(($ret = socket_bind($sock,$ip,$port)) < 0) {  
	    echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";  
	}   
	if(($ret = socket_listen($sock,4)) < 0) {  
	    echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";  
	}    
	$count = 0;      
	do {  
	    if (($msgsock = socket_accept($sock)) < 0) {  
	        echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";  
	        break;  
	    } else {            
	        $msg = "\nPHP Test Server. \n" ."用quit,shutdown,sun...等命令测试.\n";  
	        socket_write($msgsock, $msg, strlen($msg)); 
	        socket_last_error();   
	        do{
	        	if(false ===($buf = socket_read($msgsock,8192))){
	        		echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";  
                	break 2; 
	        	} 
	        	if (!$buf = trim($buf)) {  
                continue;  
		        }  
		        if ($buf == 'quit') {  
		                break;  
		        }  
		        if ($buf == 'shutdown') {  
		                socket_close($msgsock);  
		                break 2;  
		        }  
		        if ($buf == 'sun') {  
		                echo'what are you doing?';  
		        }                     
		        $talkback = "收到的信息:" . $buf;  
		        socket_write($msgsock, $talkback, strlen($talkback));
		        echo $talkback . '<br /n>';
	        }while(true);
	                         
	    }  
	    socket_close($msgsock);      
	} while (true);      
	socket_close($sock);    
?>

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

python socket(二)接收多个消息

在python socket(一)中,客户端每次只能发送一次消息,然后连接就断开。 把客户端修改一下,加入一个循环就能让它发送多个消息和接收。 server端代码: # -*- coding: utf...
  • qq_23948283
  • qq_23948283
  • 2016-09-19 15:28
  • 2455

Socket中接受tcp数据包,怎么让他receive的时候,就接一个数据包?

各位兄弟姐妹:          我在用socket进行tcp接数据包的时候,已经得到了数据包,但是每次都是数据包一起接受,由于数据包都是不一样的,而且内容长度又没有什么规律性,所以我无法把每一个包...
  • e_wsq
  • e_wsq
  • 2013-10-16 02:02
  • 1835

php socket 处理不过来数据流,该如何避免(好像是阻塞了)

php socket 处理不过来数据流,该如何处理(好像是阻塞了) 需求:php接受一个硬件往8888端口上发送数据,如果收到后,应socket_send函数返回“\xFA\x01\x01\xFF\...
  • zyu67
  • zyu67
  • 2015-06-28 10:42
  • 2065

php单例模式(多次连接数据库只实例化一次)

以前刚开始工作的时候经常连接数据库,每次用到数据库的时候就要用new进行实例并连接一次,当时因为连接数据库的次数不是很频繁,所以也没什么。后来主管对我说我现在这样每次都连接数据库的如果数据读取频繁的话...
  • leedaning
  • leedaning
  • 2014-12-11 17:28
  • 2753

mysql存储过程一次连接多次调用失败的问题解决

这个问题也困扰了我很长时间,准确的说正是因为他的存储过程无法在同一连接中2次或者多次执行,我大幅修该了程序架构,全部题换成了sql,但是毕竟sql无法执行有相当逻辑的代码,最总让我从新测试以求寻找解决...
  • tjh666
  • tjh666
  • 2013-02-20 22:04
  • 2350

数据库连接池-DBUtils高级 事务+不确定条件查询+分页

在dbutils中处理事务 事务是指用户的一次操作。这一次操作有可能是一个表,也有可能是多个表,也有可能是对一个表的多次操作。 只要是: 1:对数据数据库进行多次操作。 2:多个表,还是一个表的多次u...
  • u011417072
  • u011417072
  • 2014-01-06 19:42
  • 1714

PHP 加载一次页面时, 浏览器请求多次, 导致出错

问题描述: 在一个项目中, 有一段统计页面浏览次数的代码, 其实现的方式是, 每次页面加载, 就 UPDATE SET 一次, 给数据表中对应的值加一. 碰到的一个问题是, 刷新页面时...
  • youweiqingnian_008
  • youweiqingnian_008
  • 2016-11-11 15:40
  • 802

paip.判断字符是否中文与以及判读是否是汉字uapi python java php

paip.判断字符是否中文与以及判读是否是汉字uapi python java php   ##判断中文的原理 注意: 中文与汉字CJKV 的区别。。日本,韩国,新加坡,古越南等国家也用汉字,但不...
  • attilax
  • attilax
  • 2014-04-16 23:26
  • 1328

一次socket长连接运行导致的性能问题

socket长连接篇 客户端维持心跳导致出现性能问题 客户端代码 实现一个定时发送心跳包给服务端的线程,一个接收服务端返回消息的线程。 package practice; ...
  • shengfuqiang
  • shengfuqiang
  • 2017-12-24 10:20
  • 130

Socket通信之一次通路多次会话问题

/** * Description: 客户端 * Copyright (c) , 2016, Jansonxu * This program is protected by copyri...
  • java_goodstudy
  • java_goodstudy
  • 2016-01-26 19:22
  • 487
    个人资料
    • 访问:1288次
    • 积分:66
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类