在PHP中使用socket的几个问题(接收的最大字节数如何设置,如何判断接收完成) 不用管的读到eof就会自动结束的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用socket_read怎样判断读到eof?或者用什么别的方法读eof?socket_recv的flags没有说明,不知道怎么用 用fsocket_open打开用fread读的时候就是这样这个完全是自动的,不用你去操心的 while ($ret1 = socket_read($socket,2048, PHP_BINARY_READ)){ $ret2 .= $ret1;}socket_read() returns a zero length string ("") when there is no more data to read. to syre(神仙) 我换成使用fsockopen的代码:......$socket = fsockopen($ip, $port,&$errno, &$errstr, $TimeOut);if(!$socket) exit(); else { fwrite($socket, $command, strlen ($command)); $ret = ""; while (!feof($socket)) { $tmp = fread($socket, 1024); $ret .= $tmp; } fclose($socket);}......但是客户端程序还是会卡死,只有等到TimeOut才会执行下去.to Meteorlet(www.imsorry.com.cn/blog)客户端程序同样会卡执行不下去,循环执行到第三次的时候要等TimeOut才会返回空字符串. 你的那个“c写的socket服务器端”可能没有按照规范书写也就可能得不到预期的结束符:false或"" 我自己写了一个测试用的服务器端,接收到PHP的socket请求时,返回下面的结构:struct a{ char b1[5]; char b2[5]; char b3[4];};//建立socket部分代码省略,我只列出返回结构赋值部分struct a ret;strcpy(ret.b1,"mmmm");strcpy(ret.b2,"9999");strcpy(ret.b3,"123");send(skt, &ret, sizeof(struct a), 0);这个应该很简单的,应该没有不符合规范吧.但是在PHP用上面两位的方法就是会卡,不知道为什么. php如何通过jquery获取 $_FILES['file']['name']的值? 通用权限系统怎么设计 [讨论]PHP积分下载问题 apache怎么支持flv上传 求助 php生xml 探讨SOA的效率问题 发邮件??? 求教:关于php对.txt文件的一些行操作问题. php的文件读取和写入似乎对未知格式的文件不管用 如何用php后台执行一个耗时的脚本 表单变量设置数组的问题
或者用什么别的方法读eof?
socket_recv的flags没有说明,不知道怎么用
这个完全是自动的,不用你去操心的
{
$ret2 .= $ret1;
}socket_read() returns a zero length string ("") when there is no more data to read.
我换成使用fsockopen的代码:
......
$socket = fsockopen($ip, $port,&$errno, &$errstr, $TimeOut);
if(!$socket)
exit();
else
{
fwrite($socket, $command, strlen ($command));
$ret = "";
while (!feof($socket))
{
$tmp = fread($socket, 1024);
$ret .= $tmp;
}
fclose($socket);
}
......
但是客户端程序还是会卡死,只有等到TimeOut才会执行下去.to Meteorlet(www.imsorry.com.cn/blog)
客户端程序同样会卡执行不下去,循环执行到第三次的时候要等TimeOut才会返回空字符串.
也就可能得不到预期的结束符:false或""
struct a
{
char b1[5];
char b2[5];
char b3[4];
};//建立socket部分代码省略,我只列出返回结构赋值部分
struct a ret;
strcpy(ret.b1,"mmmm");
strcpy(ret.b2,"9999");
strcpy(ret.b3,"123");send(skt, &ret, sizeof(struct a), 0);这个应该很简单的,应该没有不符合规范吧.但是在PHP用上面两位的方法就是会卡,不知道为什么.