您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP的Socket函数参考_PHP教程

2024/5/3 2:45:53发布46次查看
这些socket函数直接跟互联网的协议进行发送信息。相对于fopensock的流来讲,他们操作在一个比较底层的级别。通常,他们都是对c 函数进行封装,并且名称都类似。如果你有使用c进行socket编程的经验,那么使用这些函数将是非常熟练的。我们这里不讨论特别详细的socket编程。
使用这些函数能够解决高层级别函数所不能解决的难题。使用这些函数能够实现类似fopen的功能,你也许有很多方法来实现socket的功能,比如在php中使用cli(command-line interface)来实现的internet守护进程。
resource socket_accept(resource socket)
在你的脚本服务器端中,使用socket_accept接受一个进入的连接。你必须首先产生一个socket,绑定它到一个名字,并且设置它监听一个端口。在块模式中,socket_accept将产生一个唯一接受后的连接。在非块模式中,它没有建立连接则返回false。另外,当你有了一个新的socket资源后就能够进行读写操作。
下面我们将示范一个简单的回显服务器端。它运行在cli(命令行)下面,它在12345端口等待客户端的连接。
socket_accept
bool socket_bind(resource socket, string address, integer port)
这个socket_bind()把一个socket资源绑定在一个地址上。这个socket必须由socket_create()函数返回的一个资源。这个地址必须是一个ip地址或者是一个保存unix socket的路径。如果是运行在internet上的socket,你还必须提供一个端口。
socket_clear_error(resource socket)
这个函数能够清除制定socket的错误,如果没有指定参数,那么将清除所有socket的错误。
socket_close(resource socket)
socket_close函数关闭一个socket并且清除该socket所占用的内存资源。
boolean socket_connect(resource socket, string address, integer port)
这个函数创建一个客户端到一个端口或者socket的连接。你必须提供一个由socket_create产生的socket。这个address参数必须到一个socket的路径或者是一个ip地址。如果是后者,还必须跟一个数字的端口号。
下面例子演示了使用udp协议的连接到游戏服务器然后获取信息的过程。
socket_connect
5,usec=>0));
     //connect to the rtcw master server
     if(!socket_connect($socket, wolfmaster.idsoftware.com, 27950)){
         print(couldnt connect: .
             socket_strerror(socket_last_error()) . );
     }
     //send request for servers
     socket_write($socket, xffxffxffxffgetserversx00);
     //get servers
     $server = array();
     while(false !== ($line = @socket_read($socket, 4096))){
         //parse data
         for($i=22; ($i+5)              $ip = ord(substr($line, $i+1, 1)) . . .
                 ord(substr($line, $i+2, 1)) . . .
                 ord(substr($line, $i+3, 1)) . . .
                 ord(substr($line, $i+4, 1));
             $port = (ord(substr($line, $i+5, 1)) * 256) +
                 ord(substr($line, $i+6, 1));
             $server[] = array(ip=>$ip, port=>$port);
         }
     }
     print(
. count($server) . servers);
     //loop over servers, getting status
     foreach($server as $s){
 &nb
http://www.bkjia.com/phpjc/508280.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/508280.htmltecharticle这些socket函数直接跟互联网的协议进行发送信息。相对于fopensock的流来讲,他们操作在一个比较底层的级别。通常,他们都是对c 函数进行封...
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product