PHP中socket

<?
 error_reporting(E_ALL);
 set_time_limit(0);
 $runtimes = 100;

 for ($i=0; $i<$runtimes; $i++)
 {
  $str = f_socket("www.baidu.com","/s?wd=10000" . $i);
  echo "<textarea>" . $str . "</textarea><br>";
 }

 function f_socket($website,$url)
 {
  $service_port = getservbyname('www', 'tcp');
  $address = gethostbyname($website);

  $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  if (false == ($socket_result = socket_connect($socket, $address, $service_port)))
  {
   echo ("SOCKET_CONNECT_ERROR: " . socket_strerror(socket_last_error($socket)));
  }

  $in = "GET " . $url . " HTTP/1.1\r\n";
  $in .= "Host: " . $website . "\r\n";
  $in .= "Connection: close\r\n\r\n";
  socket_write($socket, $in, strlen($in));

  $start_time = time();
  $str = "";
  do
  {
   if (false === ($out = socket_read($socket, 8192)))
   {
    echo ("SOCKET_READ_ERROR: " . socket_strerror(socket_last_error($socket)));
    $str = "";
    break;
   }
   if (time() - $start_time > 1)
   {
    echo ("SOCKET_READ_ERROR: Timeout!!!");
    $str = "";
    break;
   }
   $str .= $out;
  } while ($out != "");

  socket_close($socket);
  return $str;
 }
/*
 function f_socket($website,$url)
 {
  $fp = fsockopen($website, 80, $errno, $errstr, 30);
  if (!$fp)
  {
  }
  else
  {
   $out = "GET " . $url . " HTTP/1.1\r\n";
   $out .= "Host: " . $website . "\r\n";
   $out .= "Connection: Close\r\n\r\n";
   fwrite($fp, $out);
   $str = "";
   $start_time = time();
   while (!feof($fp))
   {
    $str .= fread($fp, 8192);
    if (time()-$start_time > 1)
    {
     $str = "";
     echo "timeout!!!";
       break;
    }
   }
   return $str;
  }
 }
*/
?>

时间: 2024-04-25 23:14:25

PHP中socket的相关文章

socket-Java中Socket如何发送心跳告诉服务器还活着

问题描述 Java中Socket如何发送心跳告诉服务器还活着 客户端发送的是Object(A类的实例a),如果还要发送心跳,那么心跳用什么发(字符串,对象)? 服务器端怎么分辨是有用的对象还是心跳? 解决方案 心跳检测就是消息测试用的,可以约定某个字符串为心跳检测专用字符串啊. 协商好,再处理请求数据时区分下就可以了. 解决方案二: 这个就是一个空包就可以了的,和服务器端协商好,用什么样的包头,什么样的命令码,固定就可以了

socket-VBS中Socket通过TCP协议发送数据

问题描述 VBS中Socket通过TCP协议发送数据 问题是一个接着一个: 在使用MSWINsock.Winsock通过TCP发送数据到Server的时候,提示如下错误: 代码如下: Dim sock,socket '赋值sock变量为WINSOCK的对象 Set sock = Wscript.createobject("MSWINsock.Winsock") sock.Protocol = 0 sock.RemoteHost = "10.185.59.51" so

android 中socket通信

问题描述 android 中socket通信 private Button send; private TextView rec; private static Socket client; private boolean result=false; private int a=0; private PrintWriter write; private static BufferedReader read; public static int ac=0; private InputStream

byte-C#中socket通信需要将数据按包头和定长分割,如何做

问题描述 C#中socket通信需要将数据按包头和定长分割,如何做 包头是0x55,每个数据加上包头为11个byte,但是数据中也可能出现0x55,该如何分割 解决方案 一般的解决方法是两种: 1)定义转义符,对内容中的 0x55 进行转义.如将 0x55 转义成 0x54 01;则 0x54 是 0x54 00:用两个字节表示: 2)定义包头后带数据的长度,再加上包尾,最好再加上一个校验位.这样在接收到一包数据后,先按上述定义进行有效性验证. 解决方案二: 包头后面带上长度信息,按长度去截取啊

java中socket通信问题,急急急

问题描述 java中socket通信问题,急急急 客户端和服务端用socket建立通信进行文件传输,客户端用outputstream将文件写入流中,在服务端用输入流读取.这时候客户端不想传了,断开连接并告知服务器.服务端如何获知客户端已经断开连接了. 解决方案 你客户端断开连接的时候进行了哪些操作?想想这些操作会对服务器端产生什么影响呗· 解决方案二: 服务端一直在循环监听是否有客户端连接,并不会知道某个客户端已经断开.建议客户端断开之前先执行某条协议,服务器收到这条协议便知道你要断开咯

mfc-MFC中socket TCP编程问题

问题描述 MFC中socket TCP编程问题 我在控制台用socket的tcp编程,测试完全没有问题.但是把它直接用在MFC对话框的一个按钮中,先点击服务器端的按钮,再点击客户端的按钮后,服务器端就死机了,一直就是未响应..求救("▔□▔)/谢谢! 解决方案 控制台和WinForm是不一样的. 控制台可以看成是以前的DOS,这个窗口是你独占的.所以比如你Recv的时候,可以等着,反正也没有别人来操作 但是WinForm不一样,WinForm是事件驱动的.也就是说对窗口来说,有一个事件才会有一个

Android中Socket通信的实现方法概述_java

本文实例简述了Android中Socket通信的实现方法,具体内容如下: 一.socket通信概述 通俗的来说套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口. 应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题.多个TCP连接或多个应用程序进程可能需要通过同一个TCP

java中socket connect超时的设置方法

1.首先将标志位设为Non-blocking模式,准备在非阻塞模式下调用connect函数 2.调用connect,正常情况下,因为TCP三次握手需要一些时间:而非阻塞调用只要不能立即完成就会返回错误,所以这里会返回EINPROGRESS,表示在建立连接但还没有完成. 3.在读套接口描述符集(fd_set rset)和写套接口描述符集(fd_set wset)中将当前套接口置位(用FD_ZERO().FD_SET()宏),并设置好超时时间(struct timeval *timeout) 4.调

php中socket的用法详解_php技巧

本文实例详细讲述了php中socket的用法,分享给大家供大家参考.具体用法如下: 一.开启socket phpinfo();查看是否开启了socket扩展,否则在php.ini中开启. 二.服务器端代码的写法 复制代码 代码如下: <?php error_reporting(E_ALL); set_time_limit(0); //ob_implicit_flush(); $address = '127.0.0.1'; $port = 10005; //创建端口 if( ($sock = so

i socket io-iOS 中 socket.io fn咋整呢过呀?这种通信有fn在能实现传参吗?

问题描述 iOS 中 socket.io fn咋整呢过呀?这种通信有fn在能实现传参吗? 解决方案