快速业务通道

PHP Socket 编程

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-23
的TCP / IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I / O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
\     常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。 Socket建立为了建立Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。socket函数原型为:int socket(int domain , int type , int protocol);domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP / IP协议族);type参数指定socket的类型:SOCK_STREAM 或SOCK_DGRAM,Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议;protocol通常赋值 " 0 " 。Socket()调用返回一个整型socket描述符,你可以在后面的调用使用它。 Socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket执行体将建立一个Socket,实际上 " 建立一个Socket " 意味着为一个Socket数据结构分配存储空间。 Socket执行体为你管理描述符表。两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。 socket在测量软件中的使用也很广泛 
\让我们以一个简单的例子开始 --- 一个接收输入字符串 , 处理并返回这个字符串到客户端的TCP服务 . 下面是相应的代码 : 
\
\ PHP 代码 : 
\
\ --------------------------------------------------------------------------------

  1. <?
  2. // 设置一些基本的变量
  3. $host = "192.168.1.99";
  4. $port = 1234;
  5. // 设置超时时间
  6. set_time_limit(0);
  7. // 创建一个Socket
  8. $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create
  9. socket\n");
  10. //绑定Socket到端口
  11. $result = socket_bind($socket, $host, $port) or die("Could not bind to
  12. socket\n");
  13. // 开始监听链接
  14. $result = socket_listen($socket, 3) or die("Could not set up socket
  15. listener\n");
  16. // accept incoming connections
  17. // 另一个Socket来处理通信
  18. $spawn = socket_accept($socket) or die("Could not accept incoming
  19. connection\n");
  20. // 获得客户端的输入
  21. $input = socket_read($spawn, 1024) or die("Could not read input\n");
  22. // 清空输入字符串
  23. $input = trim($input);
  24. //处理客户端输入并返回结果
  25. $output = strrev($input) . "\n";
  26. socket_write($spawn, $output, strlen ($output)) or die("Could not write
  27. output\n");
  28. // 关闭sockets
  29. socket_close($spawn);
  30. socket_close($socket);
  31. ?>
复制代码


\
\ -------------------------------------------------------------------------------- 
\
\ 下面是其每

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号