socket_create和stream_socket_server创建出来的socket有啥区别?

blogdaren 2018-03-20 抢沙发 326人次
PHP提供了两种类型的socket:socketstream_socket二者api不兼容。

socket

socket_create 创建的socket更底层,基本和c的socket接口一样,可以设置很多socket选项,
和c接口一样使用起来比较繁琐。操作底层socket必须使用socket_xx系列函数,无法使用stream类型的函数,比如无法使用fread fwrite,同时也就无法使用stream相关的过滤器、streamWrapper、ssl加密等。使用socket_*必须安装socket扩展。

stream_socket

stream_socket_server 是php自带的接口,不需要安装任何扩展。接口使用非常简单,socket_xx几行代码搞定的事情stream_socket_server一行就搞定了。

stream_socket_server创建的socket属于stream类型,可以用stream相关的函数操作,fread、fwrite等等都行。可以使用stream相关的高级特性,过滤器、streamWrapper、ssl加密等。

但是其缺点也很明显,很多socket选项无法精确设置。

【所以当无法完成精确设置的时候,可以借助socket_import_stream将stream_socket转换成扩展的sockets,然后就可以通过socket_set_option设置stream_socket的socket选项了】

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:socket_create和stream_socket_server创建出来的socket有啥区别?

发表评论:

您的昵称:
电子邮件:
个人主页: